2009-12-19 7 views
5

Wenn ich in NSRuleEditor auf die Schaltfläche "+" in einer Zeile klicke, wird eine neue Zeile erstellt. Wie kann ich Einfluss auf die Kriterien nehmen, die für diese Zeile verwendet werden?NSRuleEditor: Kriterien für neue Zeile

Es scheint, dass NSRuleEditor standardmäßig das erste Kriterium sequenziell aus der Liste der möglichen Werte auswählt. Ich hätte lieber die neue Zeile mit der Zeile übereinstimmen, in der das "+" angeklickt wurde.

Antwort

2

ich war in der Lage zu fälschen es durch eine private Methode Subklassen:

- (void)_addOptionFromSlice:(id)slice ofRowType:(unsigned int)type 
{ 
    int rowIndex = [(NSRuleEditorViewSlice*)slice rowIndex]; 

    NSArray *criteriaForRow = [self criteriaForRow:rowIndex]; 
    NSArray *displayValuesForRow = [self displayValuesForRow:rowIndex]; 

    self.template = [NSArray arrayWithObjects:criteriaForRow, displayValuesForRow, nil]; 

    [super _addOptionFromSlice:slice ofRowType:type]; 
} 

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

    NSArray *template = self.template; 

    if (template != nil) { 
     [self setCriteria:[template objectAtIndex:0] andDisplayValues:[template objectAtIndex:1] forRowAtIndex:rowIndex]; 
    } 
}