UISool在UISplitView应用程序中

时间:2011-05-07 18:27:59

标签: iphone objective-c ipad

我试图在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];    

但是,我看到的是:

enter image description here

顶部有黑条(我不知道它来自哪里,我不需要这个)还有底部的栏,是否有办法调整大小?

我想要的是得到这样的东西: enter image description here

4 个答案:

答案 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:中为导航堆栈中的所有视图控制器显示/隐藏工具栏,以获得最佳效果。