【问题标题】:IOS development with and without storyboardIOS 开发有和没有情节提要
【发布时间】:2018-07-07 10:55:58
【问题描述】:

我为我的 IOS 应用开发了登录、注册和其他几个屏幕。现在我正在尝试为我的应用程序构建仪表板屏幕(认为它类似于 Facebook 的新闻提要),但在故事板中创建 UI 时遇到了困难。此外,如果帖子中没有图像,那么我希望 UITableView 单元格通过将 UIImageView 的高度设置为零来减小其大小,但这对我不起作用。总的来说,对于我的仪表板屏幕,我正在考虑从代码本身构建 UI。现在我有以下问题:

是否可以将情节提要用于某些屏幕而不用于其他屏幕? 如果是,那么我如何从有故事板的屏幕(比如我的登录屏幕)导航到没有故事板的屏幕(比如我的仪表板屏幕)。

谢谢。

【问题讨论】:

  • 是的,您可以通过混合故事板和编码的屏幕来构建您的 UI

标签: ios swift storyboard


【解决方案1】:

使用storyboard:首先将ViewController嵌入到NavigationController中

使用序列

数据传输代码:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let detailController = segue.destination as? SecondViewController
    detailController.object = self.object
}

无序列:

如果两个 ViewController 在同一个故事板中

func foo() {
    let secondViewController = self.storyboard?.instantiateViewControllerWithIdentifier("secondViewController") as? SecondViewController
    self.navigationController?.pushViewController(secondViewController!, animated: true)
}

如果两个 SecondViewController 在不同的故事板中

从 Bundle 中获取故事板,然后导航到它

func foo() {
    let fooStoryboard = UIStoryboard.init(name: "Foo", bundle: Bundle.main)
    let secondViewController = self.storyboard?.instantiateViewControllerWithIdentifier("secondViewController") as? SecondViewController
    self.navigationController?.pushViewController(secondViewController!, animated: true)
}

没有故事板:

将您的 LoginViewController 嵌入为 rootViewController,以便可以进行导航。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    let fooStoryboard = UIStoryboard.init(name: "Foo", bundle: Bundle.main)
    let loginViewController = fooStoryboard.instantiateViewControllerWithIdentifier("loginViewController") as? LoginViewController
    let navigationController = UINavigationController(rootViewController: loginViewController)
    self.window?.rootViewController = navigationController
    return true
}

现在,您可以从 LoginViewController 中按上述建议以编程方式推送。

【讨论】:

    【解决方案2】:

    是的,您可以在不使用 Storyboard 的情况下制作应用程序,或者如果您想使用也可以使用。 故事板的优点

    1-Ease of Use

    2-Visual

    代码的优点

    1-Control

    2-Reusability

    3- Merge Conflict - 这是一些标准开发人员拒绝使用 Storyboard 的主要原因。解决合并冲突非常困难。这使得在同一个 Storyboard 上工作是一个艰苦的过程。这不是一项简单的任务,因为我们的 Storyboard 合并冲突不仅仅包含代码,还有一些代码会呈现 UI

    当然,您可以同时使用 Storyboards 和 Code 来构建 App。这完全取决于您。对于导航,只需在代码中调用简单的 push 和 segues 方法。希望这会有所帮助。

    【讨论】:

    • “标准开发者拒绝使用 Storyboard。” - 你在说什么?这似乎纯粹是您将自己的观点投射到他人身上。
    • 其他人的个人意见 - 与“标准开发人员”无关,无论他们是谁。如果您的意思是“一些”开发人员,那么我会同意您的看法。
    【解决方案3】:

    你可以在iOS中混合所有类型,

    1. 故事板,2.xib,3,以编程方式

    1 .故事板

    使用

    let vc = self.storyboard?.instantiateViewController(withIdentifier: "ViewController")
    navigationController?.pushViewController(vc!, animated: true)
    

    "ViewController" 是情节提要 ID

    2.XIB

    let vc1 = TransHistoryViewController(nibName: "TransHistoryViewController", bundle: nil)
    navigationController?.pushViewController(vc1, animated: true)
    

    "TransHistoryViewController" 是 xib 名称。

    3.以编程方式

    您必须创建UIViewController() instance 并分别跳转到那里。

    【讨论】:

      猜你喜欢
      • 2013-05-11
      • 1970-01-01
      • 2014-03-10
      • 2015-10-26
      • 2012-03-29
      • 1970-01-01
      • 1970-01-01
      • 2012-05-19
      • 1970-01-01
      相关资源
      最近更新 更多