快速访问另一个Viewcontroller的实例
我正在尝试将数据从一个View Controller的文本字段传输到另一个视图的标签。
如何从另一个View Controller的代码中调用View
Controller实例?我正在使用情节提要,因此从未在代码中创建视图控制器的实例吗?是否自动创建实例?他们叫什么名字?
谢谢你的帮助!
回答:
1.如果包含文本字段的视图控制器可以调用(通过segue)包含标签的视图控制器…
在您的项目中添加一个新的Cocoa Touch类文件,为其命名FirstViewController
并在其中设置以下代码:
import UIKitclass 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 UIKitclass 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
的名称设置为,将第二个视图控制器的名称设置为SecondViewController
。UITextField
在第一个视图控制器中创建一个。UILabel
在第二个视图控制器中创建一个。链接文本框,并在标签各自的声明FirstViewController
和SecondViewController
。
2.如果包含标签的视图控制器可以调用(通过segue)包含文本字段的视图控制器…
在这里,这是一个完美的协议/代理案例。您可能会在StackOverflow上找到很多与此相关的东西。但是,这是一个粗糙的示例。
在您的项目中添加一个新的Cocoa Touch类文件,为其命名FirstViewController
并在其中设置以下代码:
import UIKitclass 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 UIKitprotocol 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
的名称设置为,将第二个视图控制器的名称设置为SecondViewController
。UILabel
在第一个视图控制器中创建一个。UITextField
在第二个视图控制器中创建一个。链接文本框,并在标签各自的声明FirstViewController
和SecondViewController
。
以上是 快速访问另一个Viewcontroller的实例 的全部内容, 来源链接: utcz.com/qa/399370.html