导航栏视图作为模态视图?

时间:2011-03-23 20:22:20

标签: iphone ios uiviewcontroller uinavigationcontroller uitabbarcontroller

我有一个基于Tab Bar的应用程序。当用户点击按钮时,我试图显示如下视图:

+----------------------------+
| |Cancel|   Title    |Done| |
+----------------------------+
|                            |
|             ...            |
+----------------------------+

在IB下,代码具有以下层次结构:

+ File's Owner
+ First Responder
+ Nav Controller
  + Nav Bar
  + View Controller
    + View
    + Nav Item
      + Bar Button
      + Bar Button

使ViewNav 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不允许我使导航控制器成为视图连接(我只能使View视图连接)。

2 个答案:

答案 0 :(得分:1)

在显示模态视图之前,创建一个导航控制器对象,将根控制器设置为filepicker视图。然后将导航控制器显示为模态视图。 (抱歉格式化...编辑器中的格式按钮没有显示)

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];

答案 1 :(得分:0)

我正在使用齿轮错误:如果我使用带有导航栏和Picker View的UIViewController,事情就会按预期工作。我不应该使用导航控制器。

所以我的观点如下:

+ File's Owner
+ First Responder
+ View
  + Picker
  + Nav Bar
    + Nav Item
      + Bar Button
      + Bar Button