Возникают проблемы с отображением сохраненных критериев с помощью NSRuleEditor - PullRequest
0 голосов
/ 15 апреля 2019

Я установил NSRuleEditor для пользователя, чтобы он редактировал правила для фильтрации массива, у меня нет проблем для пользователя, чтобы редактировать правила, но я не смог найти способ отобразить правила, которые я сохранил для пользователя, есть ли у кого-нибудь есть идеи?

У меня есть правила, подготовленные для каждой строки и возвращенные из методов делегата. Когда пользователь нажал кнопку «+», новое правило появилось так, как я ожидал

#pragma mark - NSRuleEditorDelegate

- (NSInteger)ruleEditor:(NSRuleEditor *)editor numberOfChildrenForCriterion:(nullable id)criterion withRowType:(NSRuleEditorRowType)rowType {
    RuleCriterion *ruleCriterion = criterion;

    if (rowType == NSRuleEditorRowTypeCompound) {
        if (ruleCriterion == nil) {
            return self.compoundCriteria.count;
        } else {
            return ruleCriterion.numberOfChildren;
        }
    } else {
        if (ruleCriterion == nil) {
            return self.simpleCriteria.count;
        } else {
            return ruleCriterion.numberOfChildren;
        }
    }
}

- (id)ruleEditor:(NSRuleEditor *)editor child:(NSInteger)index forCriterion:(nullable id)criterion withRowType:(NSRuleEditorRowType)rowType {
    RuleCriterion *ruleCriterion = criterion;

    if (rowType == NSRuleEditorRowTypeCompound && ruleCriterion == nil) {
        return self.compoundCriteria[index];
    } else if (rowType == NSRuleEditorRowTypeSimple && ruleCriterion == nil) {
        return self.simpleCriteria[index];
    } else {
        return [ruleCriterion childAtIndex:index];
    }
}

- (id)ruleEditor:(NSRuleEditor *)editor displayValueForCriterion:(id)criterion inRow:(NSInteger)row {
    RuleCriterion *ruleCriterion = criterion;

    return ruleCriterion.displayValue;
}

1 Ответ

0 голосов
/ 15 апреля 2019

Вставить строку с помощью

- (void)insertRowAtIndex:(NSInteger)rowIndex withType:(NSRuleEditorRowType)rowType asSubrowOfRow:(NSInteger)parentRow animate:(BOOL)shouldAnimate;

Установить критерии и отобразить значения строки с помощью

- (void)setCriteria:(NSArray *)criteria andDisplayValues:(NSArray *)values forRowAtIndex:(NSInteger)rowIndex;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...