导航栏视图作为模态视图?
Posted
技术标签:
【中文标题】导航栏视图作为模态视图?【英文标题】:Navigation Bar View As Modal View? 【发布时间】:2011-03-23 20:22:20 【问题描述】:我有一个基于标签栏的应用程序。当用户点击一个按钮时,我试图显示一个如下所示的视图:
+----------------------------+
| |Cancel| Title |Done| |
+----------------------------+
| |
| ... |
+----------------------------+
在IB下,代码有如下层次结构:
+ File's Owner
+ First Responder
+ Nav Controller
+ Nav Bar
+ View Controller
+ View
+ Nav Item
+ Bar Button
+ Bar Button
使View
成为Nav Controller
的相等节点并没有帮助。所以我把View
留作Nav Controller
的子节点。
当一个按钮被点击时,我会调用以下代码:
FilePicker* picker = [[FilePicker alloc] init];
[self presentModalViewController:picker animated:YES];
为了完整起见,这里是FilePicker
的声明(由于故障排除,删除了额外的小部件)。添加/删除UINavigationControllerDelegate
没有帮助。
@interface FilePicker : UIViewController
<UIPickerViewDelegate, UIPickerViewDataSource>
UINavigationController* navController;
@property (retain, nonatomic) IBOutlet UINavigationController* navController;
不幸的是,我得到的只是空白视图(其他小部件在故障排除期间已被删除)。如何强制显示导航控制器? IB 不允许我将导航控制器设为视图连接(我只能将视图设为视图连接)。
【问题讨论】:
【参考方案1】:在呈现您的模态视图之前,创建一个导航控制器对象,将根控制器设置为您的文件选择器视图。然后将导航控制器显示为模态视图。 (抱歉格式化...编辑器中的格式按钮不显示)
PickerView *pv = [[PickerView alloc] initWithNibName:@"PickerView" bundle:nil];
pv.ivar1 = value1;
UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:pv];
[self.tabBarController presentModalViewController:nc animated:YES];
[nc release];
[pv release];
【讨论】:
我使用了错误的工具:如果我使用带有导航栏和选取器视图的 UIViewController,一切都会按预期工作。我应该不尝试使用导航控制器。【参考方案2】:我使用错误的工具:如果我使用带有导航栏和选取器视图的 UIViewController,一切都会按预期工作。我不应该使用导航控制器。
所以我的看法如下:
+ File's Owner
+ First Responder
+ View
+ Picker
+ Nav Bar
+ Nav Item
+ Bar Button
+ Bar Button
【讨论】:
以上是关于导航栏视图作为模态视图?的主要内容,如果未能解决你的问题,请参考以下文章