丢失导航控制器如何打开另一个视图

我目前正在显示如下的UIViewController:

AlaramDetail *alaramDetail = [[AlaramDetail alloc] init]; alaramDetail.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; [self presentModalViewController:alaramDetail animated:YES]; [alaramDetail release]; 

一切正常,但是当AlarmDetail打开时我失去了导航控制器。 我想从alarmDetail打开另一个视图我该怎么做。 如果我想,我怎么能回到我以前的导航控制器? 谢谢

您需要声明一个新的导航控制器,在其中添加您的视图控制器,然后呈现模态导航控制器。

 AlaramDetail *alaramDetail = [[AlaramDetail alloc] init]; UINavigationController *newNavigation = [[UINavigationController alloc] initWithRootViewController:alaramDetail]; [alaramDetail release]; newNavigation.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; [self presentModalViewController:newNavigation animated:YES]; [newNavigation release]; 

编辑:

要取消模态视图:

  1. 简单的方法:在你的模态视图中,你调用dismiss只是添加:

    [self.navigationController dismissModalViewControllerAnimated:YES];

  2. 更复杂的方法:在模态视图上实现和委托协议,并使视图控制器呈现模态视图的委托。 并且在委托方法中关闭模态视图。 当我需要将模态视图中的数据发送到呈现它的控制器时,我这样做。

如果您使用的是导航控制器,则应采用以下方式:

 AlaramDetail *alaramDetail = [[AlaramDetail alloc] init]; [self.navigationController pushViewController:alaramDetail animated:YES]; [alaramDetail release]; 

尝试这个,

 `[self.navigationController presentModalViewController:alaramDetail animated:YES]`; 

代替

  [self presentModalViewController:alaramDetail animated:YES];