ios - View Controller 加载了两次

标签 ios swift xcode

我正在尝试创建选项卡栏应用程序。我向第一个 View Controller 添加了一个按钮和一个文本字段。当我写一些文本并按下按钮时,我期望加载第二个 View Controller ,并在标签字段中显示文本字段中的文本。

我有 2 个问题。

  1. 第二个 View Controller 加载了两次。
  2. 当我按下选项卡栏上的按钮并再次加载第一个 View Controller 时?我的文字消失了。

我只开始使用 Xcode。请帮助我并详细描述解决办法🙏

enter image description here

enter image description here

enter image description here

enter image description here

import UIKit

var tfTextString: String = ""

class FirstViewController: UIViewController {
    @IBOutlet weak var textField: UITextField!

    @IBAction func enter(_ sender: Any) {
        if textField.text != "" {
            //performSegue(withIdentifier: "segue", sender: self)
            //tfTextString = textField.text!
            self.tabBarController?.selectedIndex = 0
        }
    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        var secondController = segue.destination as! SecondViewController
        secondController.myString = textField.text!
    }
}

import UIKit

class SecondViewController: UIViewController {
    @IBOutlet weak var label: UILabel!
    var myString = String()

    override func viewDidLoad() {
        super.viewDidLoad()

        label.text = myString
    }
}

最佳答案

看起来您的 View Controller 已加载两次,因为您加载了它两次。

不要将 Storyboard上的每个屏幕视为根据单例模式的独特实体。他们不是。它们是自己独特的类/ View 组合,每次调用它时都会实例化(加载)一次。换句话说,您查看的不是 Storyboard中的“实际”类,而是查看在需要时用于构建类的模板。因此,您在两个不同的地方调用它两次,它很乐意为您生成底层 View / Controller 的多个副本。

我认为您不想使用导航 Controller 将 View “推”回堆栈。您需要告诉选项卡栏切换到不同的 View 。

您正在寻找的代码的 swift 版本是:

self.tabBarController?.selectedIndex = 1

我认为 Objective-C 的等价物是......

[[self tabBarController] setSelectedIndex:1];

但是自从我快速完成以来已经足够长的时间了,我可能忽略了其中的一些重要内容。

关于ios - View Controller 加载了两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47188744/

相关文章:

ios - 使用标题 View 自定义导航栏

ios - DJI SDK - Swift 示例教程

swift - 文本在表格 View 单元格中重叠 -swift

iphone - 导出合规性如果我使用 CCCrypt

ios - iOS 方向问题

ios - Xcode 6.0.1 新警告

ios - UITableView 在顶部插入行崩溃

TableView 单元格中的 iOS 8 拖放问题

xcode - Flurry 集成构建失败 : Undefined symbols for architecture armv7

ios - Xamarin UITest native IOS 应用程序