ios - 从 subview 中分离

标签 ios xcode ipad ios5 uistoryboard

只是想自学 Storyboard,遇到了一个我希望人们可以回答的问题。

我想创建一个可重复使用的上部工具栏,以便在我不得不更改它时,它会更新我的所有场景。我在 Storyboard中创建了一个大小合适的 ViewController。然后我使用菜单的标识符将它加载到我的每个场景的 subview 中。这似乎工作得很好(尽管,请随时告诉我这是错误的方法)。

这就是问题开始的地方。在那个顶部工具栏上,我有一个 UIButton,我将它作为弹出窗口连接到 Storyboard中另一个大小的 ViewController。基本上,一个下拉菜单。如果我只是加载顶部工具栏,效果很好。如果我使用 segue 将一个常规按钮连接到该弹出窗口场景,那也可以。但是,如果我尝试单击按钮并在工具栏位于 subview 内时跟随 segue,我会因 EXC_BAD_ACCESS 而崩溃。我想我不允许从 subview 中生成 popOver 或在 subview 中跟随 segue?后者似乎是错误的,因为您可以对任何 UI 对象有效地做到这一点。

我还应该如何处理这个问题?

谢谢!

最佳答案

我建议使用 UINavigationController 并设置工具栏以包含您的 UIButton(作为 UIBarButtonItem)。如果您在“跟踪”工具栏或按钮时遇到任何问题,您可以将 UINavigationController 子类化,将 UIButton(或整个工具栏)添加为子类的属性,并通过 self.navigationController 属性从任何后续 View 访问它(可能违反严格的 OO,但你可以使用协议(protocol))。

至于弹出窗口,我认为您在 iPad 上没问题,但在 iPhone 上不行。 github 上有自定义项目来实现 UIPopoverController,而且 Facebook 应用程序确实在其应用程序中使用自定义弹出窗口进行通知。如果您尝试显示 UIPopoverController,iPhone 会引发异常。

关于ios - 从 subview 中分离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9459156/

相关文章:

android - 单击网站上的 url 后打开应用程序 Skype、iMessage、WhatsApp 出现问题?

iphone - EKEventEditViewController 本地化

ios - 在 SwiftUI 中使用谷歌登录时来自 OIDAuthorizationService 的 NSInvalidArgumentException

objective-c - 自动全屏播放 youtube 视频

css - iPad 联系链接 CSS 覆盖

ios - UICollectionView 顶部栏未出现在模拟器中

ios - NSData 格式的跨平台 UIImage NSImage

objective-c - cocoa 代码中的内存泄漏

ios - UIControl子类延迟响应

objective-c - 获取对 iOS 应用程序中最顶层 View /窗口的引用