我正在尝试创建Tab Bar应用程序。我在第一个viewcontroller中添加了一个按钮和一个文本字段。当我写一些文本和按下按钮时,我希望加载第二个viewcontroller,并在标签字段中显示文本字段中的文本。
我有两个问题。
我只开始使用Xcode。请帮助我并详细描述决心
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
}
}
答案 0 :(得分:3)
看起来您的视图控制器已加载两次,因为您加载两次。
不要将故事板上的每个屏幕视为按照单身模式自己的独特实体。他们不是。他们拥有自己独特的类/视图组合,每次调用它时都会实例化实例化(加载)。换句话说,你不是在看实际的'故事板中的类,您可以查看在调用时用于构建类的模板。因此,您需要在两个不同的地方进行两次调用,并且乐意为您生成基础视图/控制器的多个副本。
我认为您不想使用导航控制器来推动'视图回到堆栈。您可能希望告诉标签栏切换到其他视图。
您正在寻找的代码的快速版本是:
self.tabBarController?.selectedIndex = 1
我认为客观C等价物是......
[[self tabBarController] setSelectedIndex:1];
但是,由于我已经做得很快,我可能已经忽略了那里重要的事情。