UINavigationController, UITableView и не отображается следующий вид - PullRequest
1 голос
/ 31 июля 2009

У меня проблема с таблицей и отображается другое представление, когда пользователь касается ячейки таблицы. Я использую UITabBarController для основного вида, чтобы показать разные виды. Затем я использую UINavigationController, когда пользователь выбирает представление UITableView для отображения следующего представления из выбора ячеек таблицы.

Моя проблема заключается в следующем: когда они выбирают ячейку таблицы, ячейка подсвечивается, а следующее представление не отображается. Я использую IB. Все примеры, которые я нашел, делают это так же, как и я, за исключением примеров работы!

У меня есть контроллеры, загруженные в NSMutableArray со словарем. Я также попробовал этот код, непосредственно создав контроллер представления, а не используя элемент массива. Те же результаты ....

Я проверил целевой контроллер (Calc1ViewController), чтобы убедиться, что с контроллером все в порядке. При непосредственном отображении контроллер (Calc1ViewController) отображается правильно.

Вот код .....

Инициализация контроллера представления в словаре:

Calc1ViewController *calc1ViewController = [[Calc1ViewController alloc] init];
[menuList addObject:[NSDictionary dictionaryWithObjectsAndKeys:
                     NSLocalizedString(@"SSC - page 1",@""), @"title",
                     calc1ViewController, @"viewController",
                     nil]];
[calc1ViewController release];

Я также попробовал это, не используя словарь - создавая контроллер представления вместо [[menuList objectAtIndex: ...]; line - создавая контроллер вида следующим образом:

Calc1ViewController *targetViewController = [[Calc1ViewController alloc] init];


// the table's selection has changed, switch to that item's UIViewController
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    UIViewController *targetViewController = [[menuList objectAtIndex: indexPath.row] objectForKey:@"viewController"];
    [[self navigationController] pushViewController:targetViewController animated:YES];
    targetViewController = nil;
}

Контроллер навигации определен в AppDelegate и подключен к RootViewController через IB.

Когда я выбираю строку таблицы, в отладчике показывается, что код pushViewController выполняется, но следующее представление не отображается. Вот пример:

альтернативный текст http://thecoolestcompany.com/ssc-table-view.jpg

Есть идеи?

Ответы [ 3 ]

1 голос
/ 02 августа 2009

Наконец-то разобрался ......

У меня были UINavigationController и UITabBarController на одном уровне. После перемещения контроллера навигации в качестве дочернего элемента на контроллер панели вкладок все заработало. Вы можете добавить столько контроллеров навигации на панель вкладок, сколько захотите. В IB это немного сбивает с толку. Вам нужно перетащить NavigationController в панель вкладок, чтобы она стала новым элементом панели вкладок.

0 голосов
/ 31 июля 2009

Какое значение [self navigationController] при вызове pushViewController. Это ноль?

Каково значение targetViewController, когда оно передается pushViewController. Это ноль?

0 голосов
/ 31 июля 2009

Существует не так много, чтобы пройти с кодом, который вы предоставили. Единственное, о чем я могу думать, не глядя на больше кода, это то, что, возможно, вы неправильно инициализировали свой контроллер представления (тот, что в вашем словаре), или вообще, или словарь, к которому вы обращаетесь, не является правильным ...

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