цель c: передать делегата другому классу - PullRequest
0 голосов
/ 09 августа 2011

Я столкнулся с определенной проблемой. У меня есть протокол, который заявляет метод, который возвращает источник данных для моих табличных представлений. Источники данных генерируются одним классом для трех табличных представлений. Если вы нажмете на одну ячейку, вы перейдете к следующему виду таблицы с другим источником и т. Д. (Я думаю, вы поняли).

Все отлично работает для первого просмотра таблицы, но когда я передаю удаление следующему просмотру таблицы, я все равно не получаю источник данных для второго. Должен ли я освободить делегата в определенный момент? И если мне нужно, как мне вернуть его обратно, когда навигационная кнопка нажата ...?

Скажите, есть ли у вас идеи?

EDIT:

if ([Where isEqualToString:@"System"])
{
    if ([exchangeDelegate respondsToSelector:@selector(getNewDataSourceForSystem:)]) 
    {
        [exchangeDelegate getNewDataSourceForSystem: [controlDelegate setBranchNavigation:What]];
    }
}
    else if ([Where isEqualToString:@"User"])
    {
        if ([exchangeDelegate respondsToSelector:@selector(getNewDataSourceForUser:)]) 
        {
            [exchangeDelegate getNewDataSourceForUser: [controlDelegate setLeafNavigation:What]];
        }
}
if ([exchangeDelegate respondsToSelector:@selector(getNewDataSourceForCostumer:)]) 
{
    [exchangeDelegate getNewDataSourceForCostumer: [controlDelegate setRootNavigation]];
}

каждый responseToSelector переходит в другой класс.

EDIT: * Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: '- [Costumers getNewDataSourceForSystem:]: нераспознанный селектор, отправленный экземпляру 0x8a3b0e0'

Это то, что я получаю в качестве исключения, когда я пропускаю respondsToSelector:@selector.

Ответы [ 2 ]

0 голосов
/ 10 августа 2011

Так что, похоже, использование синглтона - это правильный способ хранения моих данных для моих просмотров:

  • Я создал синглтон.
  • Синглтон содержит мои 3 разных массива данных.
  • Делегат отправляет новые массивы в синглтон.
  • Я получаю данные из представлений через синглтон.

Как просто ... спасибо, ребята, за ваше вдохновение: -)

0 голосов
/ 09 августа 2011

Вы звонили -[UITableView reloadData], чтобы сообщить ему о признании недействительным его текущего состояния?

А вы перегрузили свой метод установки делегата, чтобы также выбрать и установить новый источник данных и делегировать при необходимости? Вероятно, что-то вроде этого:

-(void)setDelegate:(id<MYDelagate>)delegate;
{
    myTableView.dataSource = [delegate tableViewDataSource];
    myTableView.delegate = [delegate tableViewDelegate];
    _delegate = delegate;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...