2010-05-06 2 views
0

Я пытаюсь управлять развернутым списком данных. У меня есть объект Contact, который имеет отношение «многие» к другому объекту «Правило». В моем контроллере корневого представления я использую выбранный контроллер результатов для управления и отображения списка контактов. Когда контакт используется, я нажимаю новый контроллер представления в стек со списком правил контакта.Как выбрать дочерние объекты в подвью?

Я не мог понять, как использовать второй контроллер надуманные результатов для отображения правил, поэтому я использую следующее:

// create a set of the contact's rules 
rules = [NSMutableSet set]; 
rules = [self.contact mutableSetValueForKey:@"rule"]; 

// create an array of rules from the set 
arrayOfRules = [NSMutableArray arrayWithCapacity:[rules count]]; 
for (id oneObject in rules) 
    [arrayOfRules addObject:oneObject]; 

// sort the array of rules 
NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"phoneLabel" ascending:YES]; 
[arrayOfRules sortUsingDescriptors:[NSArray arrayWithObject:descriptor]]; 
[descriptor release]; 

создать набор правил, а затем использовать это для создания массива правил для сортировки. Затем я использую эти две коллекции, чтобы заполнить сгруппированное представление таблицы. Все это работает правильно.

Вот моя проблема: Есть несколько различных действий, которые пользователь может принять в этом представлении, и большинство из них требуют, чтобы я знал, какое правило было использовано. Но я не могу понять, как это получить. Например, скажем, пользователь хочет удалить правило. Мне кажется, правильный подход что-то вроде ...

[rules removeObject:ruleObjectToBeRemoved] 

... но я не могу понять, как specifiy ruleObjectToBeRemoved. Надеюсь, все это имеет смысл.

Как обычно, заранее за консультацию, которую вы можете предложить.

ответ

0

Я предполагаю, что вы каким-то образом сохраняете ссылку на arrayOfRules. Если это так, когда пользователь удаляет метод ячейки

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

tableViewDelegate следует вызывать. Если да, то вы можете использовать indexPath, чтобы получить соответствующий объект Rule, так как этот

Rule* yourRule = [arrayOfRules objectAtIndex:indexPath.row]; 

Конечно, если у вас есть несколько раздел, вам нужно получить массив, соответствующий ячейке отводами (используйте indexPath . для этого).

Чем проще способ сделать то, что вы хотите достичь, это:

[arrayOfRules removeObjectAtIndex:indexPath.row]; 

Надеется, что это помогает, Пол

Смежные вопросы