Добавление TableView с контроллером навигации в проект на основе представления — Программирование для iPhone

#iphone #objective-c #ios #uitableview #uinavigationcontroller

#iPhone #objective-c #iOS #uitableview #uinavigationcontroller

Вопрос:

У меня есть проект на основе представления с набором кнопок.

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

Мой код в основном представляет собой это руководство с некоторыми незначительными изменениями (только первые 2 части): CODE

Есть ли способ импортировать этот код в мой основной проект, чтобы при нажатии кнопки выполнялся предыдущий код?

Редактировать:

Я использую этот метод, позволяющий мне изменять представления:

 - (void) displayView:(int)intNewView{

NSLog(@"%i", intNewView);
[currentView.view removeFromSuperview];
[currentView release];

switch (intNewView) {
    case 1:
        currentView = [[View1 alloc] init];
        break;
    case 2:
        currentView = [[View2 alloc] init];
        break;
    case 3:
        currentView = [[View3 alloc] init];
        break;
    case 4:
        currentView = [[View4 alloc] init];
        break;
    case 5:
        vc = [[RootViewController alloc] init];
        currentView = [[UINavigationController alloc] initWithRootViewController:vc];
        [self presentModalViewController: currentView animated:YES];
        break;
}

[UIView beginAnimations:nil context:nil];

[UIView setAnimationDuration:0.5];

[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft  forView:self.view cache:YES];


[self.view addSubview:currentView.view];

[UIView commitAnimations];

}
  

RootViewController — правильный контроллер. Если я удалю 2 строки:

 currentView = [[UINavigationController alloc] initWithRootViewController:vc];
        [self presentModalViewController: currentView animated:YES];
  

И замените vc на currentView в инициализаторе rootview, тогда код сработает, и моя таблица отобразится с использованием моих пользовательских ячеек и успешно проанализирует xml и отобразит правильные данные, но без контроллера навигации. Однако, когда я добавляю 2 строки выше, представление таблицы не работает, и я получаю XML-код ошибки 5…Есть идеи?

Спасибо,

Джек

Ответ №1:

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

Навигационный контроллер имеет метод, называемый как

 - (id)initWithRootViewController:(UIViewController *)rootViewController
  

Обновить:

// Создайте свой корневой контроллер.

 RootController *controller = [[RootController alloc] initWithNibName:@"RootControllerNibName" bundle:nil];
  

// Создайте свой навигационный контроллер с его корневым контроллером.

 UInavigationController *navController = [UINavigationController initWithRootViewController:controller];
  

// Представьте свой контроллер навигации.

 [self presentModalViewController: navController animated:YES];
  

// Освободить корневой контроллер и навигационный контроллер…

Комментарии:

1. Привет @pratikshabhisikar, я думаю, я знаю, откуда ты, но я все еще получаю ошибки… Я отредактировал свой пост, чтобы включить это, вы можете помочь? Спасибо, Джек

2. Можете ли вы попробовать тот же код, пропустив строку ‘[self presentModalViewController: currentView animated: YES];’?

3. Да, это сработало, странно, я уверен, что я устал прошлой ночью, и это не … Неважно. В любом случае, большое спасибо @pratikshabhisikar, проблема решена!