ipad - 启动纵向时,UISplitViewController 不显示弹出按钮

标签 ipad uisplitviewcontroller launch portrait

我正在做一个基于 UISplitViewController 的 iPad 应用程序。当我的应用在 potrait 中启动时,我的工具栏按钮有点问题。不显示显示弹出框的按钮。
但是,当我将我的 iPad 旋转为横向然后返回纵向时,按钮显示!

看起来启动时未调用以下方法(这是我有显示按钮的代码):

- (void)splitViewController:(UISplitViewController *)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController: (UIPopoverController *)pc

应用程序启动时不会调用此方法,只有在旋转时才会调用此方法。更奇怪的是,我使用 Xcode UISplitViewController 模板 + 核心数据制作了一个测试应用程序(这与我正在开发的应用程序相似,并且是我用来制作此应用程序的模板)。在我没有编写任何代码的测试应用程序上,当我以纵向模式启动我的应用程序时,按钮会显示,并且在启动时也会调用上述方法,而不是我的其他应用程序。有没有人有类似的问题?

最后,从苹果文档中还不清楚是否应该在首次显示 UISplitViewController 时调用此方法:
http://developer.apple.com/library/ios/#documentation/uikit/reference/UISplitViewControllerDelegate_protocol/Reference/Reference.html%23//apple_ref/doc/uid/TP40009454

最佳答案

“Kshitiz”有正确的概念。首先我在 viewDidLoad 方法中设置了 self.splitviewController.delegate = self,设置这个委托(delegate)有点晚了。因此,我尝试在早期阶段设置委托(delegate),即 awakeFromNib 方法。然后它运作良好。

所以,问题是viewDidLoad已经加载了view之后,那么delegation就不起作用了,它会在一些事件(比如旋转iPad)之后工作一段时间。所以比 viewDidLoad 更早的阶段是 awakeFromNib。

这是有效的代码:

- (void) awakeFromNib{
    [super awakeFromNib];
    self.splitViewController.delegate = self;
}

关于ipad - 启动纵向时,UISplitViewController 不显示弹出按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5855639/

相关文章:

iphone - 如何在使用 iOS5 或 iOS6 的 iPhone/iPad 拍摄的照片上添加文字标签?

iphone - 其他用户之间的 iCloud 共享

iphone - 如何在应用启动前获取主屏幕截图

objective-c - 如何使用 MasterDetail 应用程序模板更新 DetailView

ios - 更改Master宽度后刷新UISplitViewController

c# - 从VS2010 IDE启动时,为什么C#Release 3x会变慢?

ios - ipad检测日期作为电话号码并插入电话链接

ios - 从 iPhone 中的 PrimaryOverlay 动画到 PrimaryHidden 时隐藏 UiSplitView 中的灰色框

python - 子进程,在 Python 的替代版本中启动脚本

android - 当用户从浏览器下载文件时,如何启动我的应用程序?