我试图在UISplitView应用程序的RootView中显示UIToolBar,代码如下:
self.navigationController.toolbarHidden = NO;
UIBarButtonItem *refreshItem = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh
target:self
action:@selector(refresh:)];
self.toolbarItems = [NSArray arrayWithObjects:refreshItem, nil];
[refreshItem release];
但是,我看到的是:
顶部有黑条(我不知道它来自哪里,我不需要这个)还有底部的栏,是否有办法调整大小?
我想要的是得到这样的东西:
答案 0 :(得分:2)
使用这样的东西你可以在控制器的顶部添加一个条形按钮项目:
UIBarButtonItem *refreshItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(refresh:)];
self.navigationItem.leftBarButtonItem = refreshItem;
[refreshItem release];
您将使按钮出现在主视图控制器的标题栏中,就像它的意图一样。
如果您想让按钮出现在导航控制器的底部,您可以尝试使用此方法,而不是:
UIBarButtonItem *refreshItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(refresh:)];
[self setToolbarItems:[NSArray arrayWithObjects:refreshItem, nil animated:YES]];
[self.navigationController setToolbarHidden:NO]; //optional, don't remember if it's required ...
[refreshItem release];
要使这段代码正常工作,侧控制器必须是UINavigationController,否则您将无法创建和处理工具栏。我在一个干净的项目中尝试了这种方法,工具栏呈现完美。
答案 1 :(得分:1)
我遇到了同样的问题并且修复了它,因为将代码移出了Viewdid Load以降低页面,
正如我之前提出的那样
- (UIBarButtonItem *)barButtonItem {
移动您曾经使用的代码,工作并修复问题
斯图尔特
答案 2 :(得分:1)
对于偶然发现此问题的其他人,请注意。我和adit有同样的问题。问题原来是我在viewDidLoad
方法而不是viewWillAppear
方法中设置和取消隐藏工具栏。这些间隙是在视图知道它以横向模式显示之前设置工具栏引起的。
答案 3 :(得分:0)
最安全,最简单的解决方案是设置UINavigationController
以在Interface Builder中显示工具栏和导航栏。
如果它在IB中看起来像预期的那样,它在运行时不太可能发生变化。
如果要在导航时显示/隐藏工具栏,则应在viewWillAppear:
添加鳕鱼以及总是调用超级实现,否则可能会发生意外情况。这样的事情往往会以一致的方式给出最好的结果:
-(void)viewWillAppear:(BOOL)animated;
{
[super viewWillApplear:animated];
[self.navigationController setToolbarHidden:NO
animated:animated];
}
另外,请确保在viewWillAppear:
中为导航堆栈中的所有视图控制器显示/隐藏工具栏,以获得最佳效果。