【问题标题】:How to handle more view controllers in iOS app with Swift?如何使用 Swift 在 iOS 应用程序中处理更多视图控制器?
【发布时间】:2014-09-24 16:46:55
【问题描述】:

我是 iOS 应用开发和 Swift 的新手。

我的目标是什么?在我的应用程序启动时,我想检查互联网连接以及与我的网络服务器的连接。这些部分已实现。现在我想处理它。如果一切正常,我会得到一个 true,如果有任何事情失败,我会得到一个 false。

启动时的第一个屏幕应该是一个等待视图控制器 (viewController1),它显示类似“请稍候”的内容。我希望你知道我的意思。在检查 Internet 和服务器连接时会显示此视图控制器。之后,我将转到显示来自服务器 (viewController2) 的内容的视图控制器,但前提是 Internet/服务器连接为真。如果互联网/服务器连接错误,我想转到第三个视图控制器 (viewController3) 以重复连接并联系支持人员。但是我不知道我该怎么做以及在哪里可以做到这么简单。

我希望你能帮助我。

谢谢

【问题讨论】:

  • 使用故事板。将场景用于一切,即使是最小的事情。将它们全部与 segues 链接。 (无需动画)。这是唯一的出路。所以“检查用户是否存在”是一个场景,“用户等待(微调器)”是一个不同的场景,“登录”“密码错误”等都是他们自己的场景。这是唯一的出路
  • 但它是如何工作的?你有一个简短的例子吗?

标签: ios xcode uiviewcontroller swift navigationcontroller


【解决方案1】:

您可以在 Storyboard 中创建 3 个 ViewController,并将 1(启动、登录)连接到 2(您的内容)和 1 到 3(您的支持页面)。

创建一个 NavigationController 并将其他 ViewControllers“推送”到您的主 (View2) ViewController。

然后您可以检查初始视图控制器 (1) 上的 viewdidload,如果您的互联网连接正常并且您从服务器获得响应。如果为真或假,您可以使用:

performSegueWithIdentifier("yourSegueIdentifierToView2or3", sender: self)

改变内容。

看看这个:(关于在 Swift 中使用 ViewControllers 导航的视频)

https://www.youtube.com/watch?v=AQXWsDNno8o

【讨论】:

  • 这通常可以工作,但是对于当前版本的 Xcode,您必须做两件事才能让 ViewController 工作。在您的 ViewController 类之前添加 @objc 或将 ViewController.xib 名称更改为 myProjectName.ViewController.xib
  • 他为什么需要那个?他并没有说他不想使用 Storyboard Editor。所以这通常是一个非常简单的设置,如教程视频所示。
  • 你是对的。我错误地假设。希望这对他有所帮助,因为他说他是这门语言的新手。
  • 您不必为导航控制器而烦恼。只是从一个到另一个。
【解决方案2】:

@Derdida 建议的答案通常可以工作,但是在当前版本的 Xcode 中,当使用该方法调用 ViewController 时,您必须做两件事才能工作

performSegueWithIdentifier("yourSegueIdentifierToView2or3", sender: self) 

在你的 ViewController 类之前添加 @objc

像这样:

@objc public class MyClass : ViewController {
//Usual Class stuff
}

或将 ViewController.xib 名称更改为:

myProjectName.ViewController.xib

最后是关于“是否有网络连接”的具体情况

假设您已经拥有确定连接是否建立的布尔值。 在像这样使用方法“performSegue ...”之前使用If语句

var isConnectionEstablished: Bool = false

//Check Connection to set Bool

if (isConnectionEstablished == true) {
 performSegueWithIdentifier("yourSegueIdentifierToView2or3", sender: self) 
} else {

//Show some info to the user about the situation.
}

希望这有助于回答您的问题。

编辑:感谢@Derdida 指出这一点...关于@objc 的第一个声明是如果您使用Storyboard 来创建应用程序的ViewControllers 连接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-16
    相关资源
    最近更新 更多