Не удается получить доступ к методам источника данных UITableView с помощью делегата UISegmentedControl

Я использую UISegmentedControl в моем viewController. Выбрав один сегмент, я хочу, чтобы данные таблицы загружались из NSFetchedResultsController (уже настроен), а из другого сегмента я хочу, чтобы данные загружались из массива.

Я использую метод делегата сегмента здесь

- (void)segmentedControl:(SVSegmentedControl*)segmentedControl didSelectIndex:(NSUInteger)index

Проблема здесь в том, что я не могу получить доступ к методам источника данных tableView, используя делегат сегмента.

Например, было бы хорошо, если бы в методе didSelectRowAtIndexPath я мог бы сделать что-то вроде if (selectedSegment == 1), то xxxxx.

Кто-нибудь знает, как я могу это сделать?

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


person Jon    schedule 28.07.2011    source источник


Ответы (1)


Предполагая, что вы синтезировали свой сегментированный элемент управления как свойство, вы, безусловно, можете получить к нему доступ из методов источника данных tableView.

Например, если ваш сегмент называется userSegment, вы просто сделаете

self.userSegment.selectedSegmentIndex

И затем действовать соответственно. например if(self.userSegment.selectedSegmentIndex == 0) {...} else {...}. Есть множество методов, которые вы можете использовать и с этим индексом. Ознакомьтесь с документацией. Один простой пример:

NSString *selectedTitle = [self.userSegment titleForSegmentAtIndex:self.userSegment.selectedSegmentIndex];

Это всего лишь простой пример, но суть в том, что вы можете легко использовать состояние своего сегмента для условного заполнения источника данных tableView.

Изменить: см. Справочник по классу UISegmentedControl для получения дополнительной информации о selectedSegmentIndex и других свойствах и методах, которые вы можете использовать.

person Murdock    schedule 28.07.2011
comment
Я забыл отредактировать вставленный выше код, чтобы отразить мой пример. Теперь все имена iVar должны соответствовать примеру. - person Murdock; 28.07.2011