快速访问另一个Viewcontroller的实例

我正在尝试将数据从一个View Controller的文本字段传输到另一个视图的标签。

如何从另一个View Controller的代码中调用View

Controller实例?我正在使用情节提要,因此从未在代码中创建视图控制器的实例吗?是否自动创建实例?他们叫什么名字?

谢谢你的帮助!

回答:

1.如果包含文本字段的视图控制器可以调用(通过segue)包含标签的视图控制器…

在您的项目中添加一个新的Cocoa Touch类文件,为其命名FirstViewController并在其中设置以下代码:

import UIKit

class FirstViewController: UIViewController {

@IBOutlet weak var textField: UITextField! // FIXME: link this to the UITextField in the Storyboard!!!

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

let controller = segue.destinationViewController as! SecondViewController

controller.text = textField.text

}

}

在您的项目中添加一个新的Cocoa Touch类文件,为其命名SecondViewController并在其中设置以下代码:

import UIKit

class SecondViewController: UIViewController {

var text: String?

@IBOutlet weak var label: UILabel! // FIXME: link this to the UILabel in the Storyboard!!!

override func viewDidLoad() {

super.viewDidLoad()

label.text = text

}

}

在情节提要中,将第一个视图控制器嵌入到中UINavigationController。使用UIButton或将第一个视图控制器链接到第二个UIBarButtonItem。将第一个视图控制器FirstViewController的名称设置为,将第二个视图控制器的名称设置为SecondViewControllerUITextField在第一个视图控制器中创建一个。UILabel在第二个视图控制器中创建一个。链接文本框,并在标签各自的声明FirstViewControllerSecondViewController


2.如果包含标签的视图控制器可以调用(通过segue)包含文本字段的视图控制器…

在这里,这是一个完美的协议/代理案例。您可能会在StackOverflow上找到很多与此相关的东西。但是,这是一个粗糙的示例。

在您的项目中添加一个新的Cocoa Touch类文件,为其命名FirstViewController并在其中设置以下代码:

import UIKit

class FirstViewController: UIViewController, DetailsDelegate {

@IBOutlet weak var label: UILabel! // FIXME: link this to the UILabel in the Storyboard

func updateLabel(withString string: String?) {

label.text = string

}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

let controller = segue.destinationViewController as! SecondViewController

controller.delegate = self

}

}

在您的项目中添加一个新的Cocoa / Cocoa Touch类文件,为其命名SecondViewController并在其中设置以下代码:

import UIKit

protocol DetailsDelegate: class {

func updateLabel(withString string: String?)

}

class SecondViewController: UIViewController {

weak var delegate: DetailsDelegate?

@IBOutlet weak var textField: UITextField! // FIXME: link this to the UITextField in the Storyboard

override func viewWillDisappear(animated: Bool) {

super.viewWillDisappear(animated)

delegate?.updateLabel(withString: textField.text)

}

}

在情节提要中,将第一个视图控制器嵌入到中UINavigationController。使用UIButton或将第一个视图控制器链接到第二个UIBarButtonItem。将第一个视图控制器FirstViewController的名称设置为,将第二个视图控制器的名称设置为SecondViewControllerUILabel在第一个视图控制器中创建一个。UITextField在第二个视图控制器中创建一个。链接文本框,并在标签各自的声明FirstViewControllerSecondViewController

以上是 快速访问另一个Viewcontroller的实例 的全部内容, 来源链接: utcz.com/qa/399370.html

回到顶部