Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UISplitView应用程序中的UIToolbar_Iphone_Objective C_Ipad - Fatal编程技术网

Iphone UISplitView应用程序中的UIToolbar

Iphone UISplitView应用程序中的UIToolbar,iphone,objective-c,ipad,Iphone,Objective C,Ipad,我试图在UISplitView应用程序的根视图中显示UIToolBar,代码如下: self.navigationController.toolbarHidden = NO; UIBarButtonItem *refreshItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh

我试图在UISplitView应用程序的根视图中显示UIToolBar,代码如下:

self.navigationController.toolbarHidden = NO;
UIBarButtonItem *refreshItem = [[UIBarButtonItem alloc]
                                 initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh 
                                                      target:self 
                                                      action:@selector(refresh:)];    
self.toolbarItems = [NSArray arrayWithObjects:refreshItem, nil];
[refreshItem release];    
然而,我看到的是:

顶部有一个黑条(我不知道这是从哪里来的,我不需要这个)底部也有一个黑条,有没有办法调整它的大小

我想要的是得到这样的东西:

使用类似的方法,您可以在控制器顶部添加一个条形按钮项:

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

要使这段代码正常工作,side控制器必须是UINavigationController,否则您将无法创建和处理工具栏。我在一个干净的项目中尝试了这种方法,工具栏呈现得非常完美。

最安全、最简单的解决方案是设置
UINavigationController
在Interface Builder中显示工具栏和导航栏

如果它在IB中看起来像预期的那样,那么它在运行时就不太可能改变

如果要在导航时显示/隐藏工具栏,则应在
视图中添加cod,这样做将出现:
始终调用超级实现,否则可能会发生意外情况。类似的东西往往以一致的方式提供最佳结果:

-(void)viewWillAppear:(BOOL)animated;
{
    [super viewWillApplear:animated];
    [self.navigationController setToolbarHidden:NO
                                       animated:animated];
}

另外,请确保根据需要在
视图中显示/隐藏工具栏将显示:
用于导航堆栈中的所有视图控制器,以获得最佳结果。

我也遇到了同样的问题,刚刚修复了它,因为将代码移出视图加载以降低页面

正如我先前所说的那样

- (UIBarButtonItem *)barButtonItem {
将以前使用的代码移到下面,解决了问题


Stewart

对于任何偶然发现这个问题的人来说,这只是一个提示。我和adit有同样的问题。问题是我在
viewDidLoad
方法中设置并取消隐藏工具栏,而不是
viewwillbeen
方法。这些间隙是由于在视图知道它正在以横向模式显示之前设置工具栏造成的。

您发布的代码看起来没问题。问题可能与工具栏无关。在表视图、导航栏和工具栏之间,顶部和底部似乎都有间隙。您是否可以发布设置表视图和调整其大小的代码,或者发布设置拆分视图控制器、导航控制器和根视图控制器的代码?问题可能存在。我直接使用自己的模板设置UISplitView控制器如何设置表视图?表视图的框架与导航栏和工具栏之间似乎存在间隙。我只是在猜测。无论如何,请原谅重复,但您发布的工具栏代码看起来不错。嗯……我刚刚启动一个新的UISplitView应用程序,没有更改任何其他内容,然后执行self.navigationController.toolbarHidden=NO;这就是我想要的…我想要的是refreshItem现在的样子,但是我想消除顶部的黑色条,并将底部条调整到合适的大小。你可以创建一个自定义UIToolbar对象,并将其作为子视图添加到side controller中。嗯……你能给我一个如何做的代码示例吗?我对如何添加到底部感到困惑。我在上面添加了一张关于我真正想做什么的图片。我更新了答案。看起来您的方法是正确的,但是在一个干净的项目中,它不会带来问题。您应该检查侧视图控制器定义。它是一个UINavigationController吗?