Добавить UINavigationController поверх основного UIViewController? - PullRequest
1 голос
/ 19 октября 2011

У меня есть стандартный UIViewController, который работает шарм. Тем не менее, я хочу добавить UINavigationController поверх этого как подпредставление, добавлять и удалять его по желанию. Однако, кажется, вы не можете просто добавить другой контроллер в текущий контроллер в качестве подпредставления. Итак, как мне это сделать?

Спасибо.

Ответы [ 2 ]

1 голос
/ 19 октября 2011

Вот некоторый код, который создает новое представление в контроллере навигации и показывает его «сверху» (представляет его модально).

Здесь есть несколько ключевых вещей:

Если вы представляете навигационный контроллер модально, вам необходимо установить его левую и правую кнопки (если вам нужно), прежде чем initWithRootController и presentModally

Даже если ваше текущее представление находится в navController, если вы представляете его модально, его нужно обернуть в UINavigationcontroller (есть некоторые сообщения SO, охватывающие это)

UINavigationController с presentModalViewController

MyView *myView = [[MyView alloc] initWithNibName:@"MyView" bundle:nil];

UIBarButtonItem *cancelBtn = [[UIBarButtonImageItem alloc] init...  

UIBarButtonItem *doneBtn = [[UIBarButtonItem alloc] init...

[[myView navigationItem] setLeftBarButtonItem:cancelBtn];
[[myView navigationItem] setRightBarButtonItem:doneBtn];  
[cancelBtn release];    
[doneBtn release];

// Edit purchase in full modal view.
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:myView];

[[self navigationController] presentModalViewController:navController animated:YES];

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

- (IBAction)cancel:(id)sender
{
    NSLog(@"cancel");
    [self dismissModalViewControllerAnimated:YES];
}

- (IBAction)save:(id)save
{
    NSLog(@"done");
    // do work here
    [self dismissModalViewControllerAnimated:YES];
}
0 голосов
/ 19 октября 2011

Вы можете добавить чужие контроллеры представление как подпредставление представления этого viewcontroller

[mainViewController addSubview:anotherViewController.view];

В случае UINavigationController, хотя я не знаюто, что вы делаете, обычно не то, что вы хотели бы сделать.

Вы смотрели на -(void)presentModalViewController:animated?

...