Два UITableViews являются частью одного UIViewController: каждый с делегатами и источниками данных, которые являются разными объектами - PullRequest
1 голос
/ 09 октября 2011

У меня есть приложение, в котором мне нужно, чтобы два табличных представления менялись местами за один раз. В настоящее время он настроен таким образом, что viewcontroller является делегатом и источником данных для обоих, поэтому я использую операторы if / else в методах делегата / источника данных, чтобы определить, для какого табличного представления выполнить действие, как показано ниже:

- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{
    if (tableView == [self selectAnAlbumTableView])
    {
        return [[self albums] count];
    }
    else
    {
        return ceil([[self album] numberOfAssets] / 4.0);
    }

}

Однако я видел это в другом потоке: «Один из методов, который я часто использовал, заключается в том, чтобы на самом деле делегаты и источник данных для двух UITableView были разными объектами. Таким образом, ваш контроллер представления не должен переключаться обратно и далее, и ваш код в целом чище и проще ». У меня вопрос: как бы вы реализовали нечто подобное, то есть отдельные объекты для делегата / источника данных, и это лучше, чем то, что я сейчас делаю?

Ответы [ 2 ]

1 голос
/ 09 октября 2011

См. На самом начальном уровне: я бы порекомендовал вам не играть с двумя контроллерами табличного представления. Просто используйте контроллер навигатора и выдвигайте представление в соответствии с вашими требованиями. Гораздо проще называть вас различными классами контроллера представления, чем играть с двумя представлениями таблицы в одном контроллере.

0 голосов
/ 09 октября 2011

Это зависит. У обоих есть свои преимущества и недостатки. Я полагаю, что оба ваших табличных представления находятся в viewcontroller. Если и делегат, и источник данных находятся в разных классах (в основном унаследованных от NSObject), то в методе делегата, таком как tablewviewDidSelectRowAtIndexPath, вы не сможете напрямую выдвигать контроллер представления или метку доступа / установки viewcontroller. Вы должны использовать свой собственный метод делегата из источника данных / делегата tableView обратно в viewcontroller.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...