Добавление UINavigationController для просмотра других, чем основной вид - PullRequest
1 голос
/ 13 января 2012

Я хотел бы добавить UINavigationController в мое представление информации о приложении (НЕ в мой основной вид). Я просмотрел / прочитал несколько учебных пособий, показывающих, как добавить его в главное окно через AppDelegate с использованием IB. В моем случае я хочу, чтобы он появлялся только тогда, когда пользователь нажимает кнопку информации и переводится в инфо-вид. Вот как я переключаюсь на infoView внутри моего MainViewController:

- (IBAction)infoButtonPress:(id)sender
{
    // Create pointer to instance of InfoViewController
    InfoViewController *infoView = [[InfoViewController alloc] initWithNibName:@"InfoViewController" bundle:nil];
    // Add view switching animation
    infoView.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    // Change view using animation
    [self presentModalViewController:infoView animated:YES];    
}

В этот момент отображается информационный вид, и я бы хотел, чтобы ЭТО было RootView UINavigationController. Я попытался добавить строку:

UINavigationController *infoNavController = [[UINavigationController alloc] 
                                             initWithRootViewController:infoView];

после создания экземпляра InfoViewController, но приложение вылетает. Можно ли добавить UINavigationController в представления, отличные от основного представления?

Спасибо.

1 Ответ

1 голос
/ 13 января 2012

Вы очень близки с вашей реализацией. Попробуйте это в следующем порядке.

InfoViewController *infoView = [[InfoViewController alloc] initWithNibName:@"InfoViewController" bundle:nil];
UINavigationController *infoNavController = [[UINavigationController alloc] 
                                             initWithRootViewController:infoView];
[infoView release]; // skip this if using ARC
infoView.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:infoNavController animated:YES]; 

UPDATE

Чтобы убить этот модал, вам нужно добавить свои кнопки в основной модальный вид.

InfoViewController.m

-(void)cancel:(id)sender {
   [self dismissModalViewControllerAnimated:YES];
}

-(void)viewDidLoad {
   [super viewDidLoad];

   UIBarButtonItem *cancelButton =
    [[UIBarButtonItem alloc] initWithTitle: @"Cancel"
                                     style: UIBarButtonItemStylePlain
                                    target: self
                                    action: @selector(cancel:)];
    self.navigationItem.leftBarButtonItem = cancelButton;
    [cancelButton release];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...