UITableViewController не помещает представления в стек - PullRequest
0 голосов
/ 09 августа 2011

У меня есть UITableViewController, в заголовке которого есть панель UISearch. Когда пользователь выполняет поиск, мой UITableView заполняется результатами. Я хочу поместить новый контроллер представления в стек, когда пользователь выбирает результат.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

    if (cell.accessoryType == UITableViewCellAccessoryNone) {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;

        WatchlistSheetView* watchlistSheetView = [[WatchlistSheetView alloc] initWithNibName:@"WatchlistSheetView" bundle:nil];
        watchlistSheetView.symbol = cell.textLabel.text;
        [self.navigationController pushViewController:watchlistSheetView animated:YES];
        [watchlistSheetView release];

        //[self dismissModalViewControllerAnimated:YES];
    }     
}

Следующее не помещает контроллер представления в стек. Ничего не произошло. Как я могу решить?

Ответы [ 2 ]

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

Похоже, что вы вызываете self при обращении к контроллеру навигации.Вы фактически выделили контроллер навигации и присвоили его себе?

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

Полагаю, что self.navigationController равно нулю, поэтому сообщение pushViewController никуда не отправляется.

Чтобы это исправить, вы можете создать UINavigationController в вашем application:didFinishLaunching и выдвинуть представление таблицы.контроллер, подключенный к нему в качестве корневого контроллера, по следующим направлениям:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    UINavigationController* navigation = [[UINavigationController alloc] init];

   ....
   [navigation pushViewController:yourTableViewController animated:NO];
   ...
   [window addSubview:[navigation view]];
   [self.window makeKeyAndVisible];
}

или вы можете использовать initWithRootController для инициализации контроллера представления навигации с вашим контроллером представления таблицы.

...