0

我有一个带有导航栏和以下代码的导航控制器。

panel = [[Panel alloc] initWithNibName:@"Panel" bundle:nil];
[self presentModalViewController:panel animated:NO];
panel.view.superview.frame = CGRectMake(250, 180, 550, 400);

我希望这个子视图出现在导航栏上,虽然效果很好,但我也希望它有一个特定的框架;我不希望我的子视图全屏显示。我考虑过使用presentModalViewController,但有没有其他方法可以覆盖导航栏?

4

2 回答 2

0

添加到导航栏的任何内容实际上都是一个视图。你有一些选择。我不认为你想要导航栏上的整个视图,因为它太大了,所以我假设你想通过按下导航栏上的按钮来显示视图。

为此,只需在导航栏上添加一个按钮,这里有几个选项或可以添加它们的位置。我通常使用self.navigationItem.rightBarButtonItem, 或self.navigationItem.leftBarButtonItem,但您也可以在标题视图中进行尝试并获得它。我过去在导航栏的 titleView 中设置了一个按字母顺序分段的控件。

添加按钮后,您所要做的就是创建将连接到该按钮的操作,该操作会将标志(BOOL 实例变量)与真或假进行比较。如果为true,则只需将pannel.view 添加Subview 到self.view,如果为false 则只需[pannel.view removeFromSuperview]

添加和删​​除视图后不要忘记设置标志。

于 2011-06-14T17:33:20.510 回答
0

我不完全确定您要在这里完成什么,但我怀疑您当前的代码是否是正确的解决方案。在 iPhone 上,UIViewController 的视图预计会填满它们的窗口,您不应该尝试调整视图控制器的视图框架的大小或让模态呈现的 UIViewController 的视图填满小于全屏。您能否更具体地了解您当前的控制器和视图结构是什么样的,以及您希望构建什么样的效果?

于 2011-06-14T19:59:45.063 回答