そのメソッドには がありrootViewController
、viewDidLoad
別の 2 つのViewController2*
オブジェクトとそのビューを のサブビューとして初期化しrootViewController.view
、最初に を設定しViewController2* controller.view.hidden = YES
ました。
次に、v1にはボタンハンドラーがあり、タッチするとUINavigationControllerが表示され、その後dismissViewControllerAnimated
v1で「閉じる」ボタンが呼び出されます。
問題は、解雇が完了すると、ViewController2*
火の 2 つですviewWillAppear
。表示されているものだけを起動viewWillAppear
し、非表示のものでは起動しないようにする方法は?
のrootViewController
実装:
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.v1 = [[ViewController2 alloc] init];
self.v1.title = @"v1";
[self.view addSubview:self.v1.view];
self.v1.view.hidden = YES;
self.v2 = [[ViewController2 alloc] init];
self.v2.title = @"v2";
[self.view addSubview:self.v2.view];
UIButton * btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[btn setTitle:@"POP" forState:UIControlStateNormal];
[btn sizeToFit];
[btn addTarget:self action:@selector(touchHandler:) forControlEvents:UIControlEventTouchDown];
[self.view addSubview:btn];
}
- (void)touchHandler:(id)sender {
UINavigationController * nc= [[UINavigationController alloc] initWithRootViewController:[[UIViewController alloc] initWithNibName:nil bundle:nil]];
((UIViewController *)[nc.viewControllers objectAtIndex:0]).navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"dismiss" style:UIBarButtonItemStyleBordered target:self action:@selector(dismissHandler:)];
[self presentViewController:nc animated:YES completion:nil];
}
- (void) dismissHandler:(id)sender
{
[self dismissViewControllerAnimated:YES completion:nil];
}
@end
ViewController2:
@implementation ViewController2
- (void)viewWillAppear:(BOOL)animated
{
NSLog(@"%@",self.title);
}
@end