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

时间:2011-05-12 06:29:42

标签: iphone objective-c ios ios4

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

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

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

3 个答案:

答案 0 :(得分:6)

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

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. 更复杂的方式:在模态视图上实现和委托协议,并使视图控制器呈现模态视图的委托。并且在委托方法中关闭模态视图。当我需要从模态视图向显示它的控制器发送数据时,我这样做。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

试试这个,

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

而不是

 [self presentModalViewController:alaramDetail animated:YES];