ios - 在多个 Storyboard 中使用相同的 UIViewController

标签 ios uiviewcontroller storyboard uistoryboard xib

我最近在做的一个 iOS 应用程序中存在三种类型的用户,用户类型如下所列:

  • 标准用户
  • 团队负责人
  • 董事会成员

由于用户的功能可能不同,我认为在应用程序中拥有三个 Storyboard 是有意义的,每个 Storyboard 都包含当前登录用户的各自流程。因此,Story Board 将是:

  • 标准用户 Storyboard
  • 团队负责人 Storyboard
  • 董事会成员 Storyboard

到目前为止,还不错!

现在,我有一个 TasksViewController,它负责显示特定于当前登录用户的任务,这个 View Controller 是在 XIB 中创建的。 TasksViewController 提供了一个通用功能,我应该能够在所有 Story Boards 中使用 TasksViewController,这对我来说具有一定的逻辑意义。

问题是:

  • 这样做正确吗?
  • 如果这样做是正确的,是否有可能这样做?
  • 如果可能,如何实现?

最佳答案

  • 这样做正确吗?

这取决于您的全局项目。请记住,您的建议是可能的,但会使代码难以理解/调试 .事实上,想象一下你通过从 XIB 手动实例化它来推送你的 Controller ,如何从这个 Controller 处理 segue(假设 segue 必须根据用户类型有不同的行为)?根据用户类型切换 segue?太频繁的话会很丑..

  • 有可能吗?如何实现?

当然可以。例如,创建一个专用于共享组件的 Storyboard,并在需要时即时实例化 Controller (片段用 Swift 编写,方法在 Objective-C 中相同)。

let sharedStoryboard: UIStoryboard = UIStoryboard(name: "SharedStoryboard", bundle: NSBundle.mainBundle())
let sharedController: UIViewController = sharedStoryboard.instantiateViewControllerWithIdentifier("ControllerIdentifier") as! UIViewController
self.navigationController?.presentViewController(sharedController, animated: true, completion: nil)

这将实例化包含在您的共享 Storyboard 中的 Controller 并将其呈现给用户。这是旧方法,但在处理多个 Storyboard时,这是最佳解决方案。

  • 那怎么办?

如果您只有几个 Controller ,我建议您为每个用户复制它 - 如果您需要在 Controller 上添加用户类型特定功能,将来也会更容易.如果您的应用的很大一部分是共享的,请使用上面介绍的方式。

希望这对您有所帮助!

关于ios - 在多个 Storyboard 中使用相同的 UIViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29921458/

相关文章:

ios swift - 从多个选项卡实例化相同的 VC

ios - 如何以编程方式从 Storyboard 中填充静态 UITableView?

ios - Cordova/Ionic 2 相机权限问题 iOS 10.2.1

ios - Apple Touch Id 作为应用程序中的 PIN 码

objective-c - 在 MonoTouch 中释放/处理 UIViewController

ios - Swift 中的滑动页面转换

ios - xcode Storyboard不适合 iphone 5

ios - Xcode 不会在 Storyboard中显示我的文本字段占位符文本

ios - 如何将多个参数传递给选择器函数

ios - 设置 SKSpriteNode.phyisicsBody.categoryBitMask 时出现 EXC_I386_INVOP 错误