2010-08-06 2 views
0

Я пытаюсь реализовать модальный контроллер навигации, как описано в руководстве компании Apple IOS: Combined View Controller InterfacesUIViewController не реагирует на presentModalViewController для модальной навигации

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

Переключение вещей Я могу доказать, что контроллер вида, который я использую в качестве навигационных контроллеров, RootViewController отлично работает на своем собственном (добавив его вручную в качестве подкатегории представления).

Кроме того, реализация addSubView ([self.view addSubview: navController.view]) вместо presentModalViewController работает нормально.

Можно ли указать свою простую ошибку, потому что я 5 минут доходя пинать свое лицо: D

заголовок реализации

#import <UIKit/UIKit.h> 

@interface BaseViewController : UIViewController { 

} 

#import "BaseViewController.h" 
#import "ScannedListViewController.h" 
#import "ScannedItemViewController.h" 

@implementation BaseViewController 

- (void)viewDidLoad { 

    ScannedListViewController *listViewController = [[ScannedListViewController alloc] init]; 
    ScannedItemViewController *itemViewController = [[ScannedItemViewController alloc] init]; 

    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:listViewController]; 
    [navController pushViewController:itemViewController animated:NO]; 

    [self presentModalViewController:navController animated:YES]; 

    [listViewController release]; 
    [itemViewController release]; 
    [navController release]; 

    [super viewDidLoad]; 

} 

RootControllerView является базовым тестом TableViewController со следующим заголовком

@interface ScannedListViewController : UITableViewController <UITableViewDelegate, UITableViewDataSource> 

Спасибо заранее, если ваши помочь

ответ

1

Почему вы представляете что-то модальны в viewDidLoad методе а контроллер представления? Я нахожу это странным сверху. Как правило, вы показываете контроллер модального представления в ответ на какое-либо действие (например, нажатие кнопки).

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

Вы должны иметь [super viewDidLoad] в качестве первой строки, а не последней строки, метода.

<UITableViewDelegate, UITableViewDataSource> не требуется UITableViewController, поскольку он уже принимает эти протоколы. Удалите этот бит.

+0

Хм .. Ну, желаемый результат - загрузить приложение, показать представление в течение 5 секунд, а затем перейти к основной части приложения, которая является трехстраничной формой, контролируемой навигационным контроллером. Возможно, я был введен в заблуждение относительно подхода, который я должен принять. Второй контроллер воспроизведения, на который нажимается, прямо из примера Яблок. Я предположил, что строю стек представлений, поскольку я не смог увидеть результаты, которых я не понимал, что это не лучшая практика! – lucygenik

+0

Если вы намереваетесь показать представление в течение 5 секунд, а затем по-другому показать другое представление, вы не достигнете этого, выполнив его внутри 'viewDidLoad'. Вам нужно будет использовать «NSTimer» и установить его обратный вызов для метода, который подталкивает модальное представление. –

+0

Спасибо, Шогги, что отлично сработало. Мне нужно работать над пониманием жизненных циклов зрения! – lucygenik

Смежные вопросы