Добавить tableView в navigationController - PullRequest
1 голос
/ 20 сентября 2011

В viewDidLoad я добавляю просмотр таблицы к навигационному контроллеру следующим образом:

[self.view addSubview:navigationController.view];
    [self.navigationController.view addSubview:tableViewRecherchePartenaire];

Когда выбрана строка из таблицы, я хочу, чтобы эта таблица исчезла, и я попробовал что-то вроде этого:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
 if(indexPath.row==0){
        NSLog(@"RecherchePartenaireTypePartenaireViewController...");


        [self.navigationController.view removeFromSuperview];

        recherchePartenaireTypePartenaireViewController=[[RecherchePartenaireTypePartenaireViewController alloc] init];
        recherchePartenaireTypePartenaireViewController.recherchePartenaireViewController=self.view;

        [self.navigationController pushViewController:recherchePartenaireTypePartenaireViewController animated:YES];
        [recherchePartenaireTypePartenaireViewController release];
    }
} 

но табличное представление исчезает, но следующее представление не появляется. Как я могу использовать табличное представление с navigationController? Пожалуйста, помогите ... Я провел много времени с этим, и я вижу ошибку .. Спасибо заранее ..

Ответы [ 2 ]

2 голосов
/ 20 сентября 2011

Прежде всего, вы не должны добавлять подпредставление к представлению UINavigationController. Поместите ваш UITableView в подкласс UIViewController и сделайте его rootViewController вашего контроллера навигации. Вы можете сделать это в своем основном xib-файле или программно:

navigationController.rootViewController = myTableViewController;

После того, как вы почти сможете сохранить свою функцию:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    if(indexPath.row==0){
        NSLog(@"RecherchePartenaireTypePartenaireViewController...");
        recherchePartenaireTypePartenaireViewController=[[RecherchePartenaireTypePartenaireViewController alloc] init];
                    [self.navigationController pushViewController:recherchePartenaireTypePartenaireViewController animated:YES];
        [recherchePartenaireTypePartenaireViewController release];
    }
} 

Но эта функция будет в myTableViewController.

В своем коде вы удалили представление вашего navigationController из иерархии представлений. То есть, когда вы что-то нажимаете, ничего не происходит, потому что UINavigationController обрабатывает нажатие, выдвигая представление следующего контроллера на собственное представление.

Вот хороший пример Apple, который может вам помочь :) http://developer.apple.com/library/ios/#samplecode/TheElements/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007419

0 голосов
/ 20 сентября 2011

В вашем коде uitableview не является представлением типа навигации. Так что, когда вы добавляете UITableview к представлению navigationcontroller, superview - это uitableview.Ans в didselectrowAtIndexPath вы нажимаете на UITableview, но не на NavigationController. Поэтому создайте UITableviewкак навигационный тип. Затем добавьте его в navigationController. И сделайте то же самое, что и вы.

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