Переключитесь на контроллер UITableView и прокрутите до начала раздела - PullRequest
2 голосов
/ 02 октября 2009

Доброе утро,

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

Я нашел, по крайней мере, что мне нужно для переключения контроллеров панели вкладок с помощью

[self.applicationTabBarController setSelectedIndex:1];

и я могу получить ссылку на контроллер второго вида с

UINavigationController *secondTabNavController = (UINavigationController *)[[self.applicationTabBarController viewControllers] objectAtIndex:1];

MyViewController *myViewController = (MyViewController *)[[ordersNav viewControllers] objectAtIndex:0];

Но что мне неясно, так это то, как я могу прокрутить UITableView в определенный раздел. Я пытался

NSIndexPath *myPath = [NSIndexPath indexPathForRow:0 inSection:3];

[myViewController.ordersTableView scrollToRowAtIndexPath:myPath atScrollPosition:UITableViewScrollPositionTop animated:NO];

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

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

Спасибо.

1 Ответ

0 голосов
/ 04 октября 2009

Вы должны быть осторожны, когда делаете этот звонок scrollToRowAtIndexPath. Если вы поместите его до загрузки представления, возможно, этот метод будет запущен для nil. Я бы сказал, что в myViewController есть функция с именем scrollToRowAtIndexPath:, которая определяет, отображается ли представление в данный момент, и если это так, просто вызывает версию tableView. Если нет, сохраните indexPath до вызова viewWillAppear: и запустите его.

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