如何将标签文字更改为文本字段文字? 此源代码将标签文本更改为同一类中的文本域文本,但我想更改不同类中的标签。 label位于ViewController.swift中,textfield位于ProfileViewController.swift
中这是源代码:
ViewController.swift
import UIKit
import Social
class ViewController: UIViewController, SideBarDelegate {
@IBOutlet weak var name: UILabel!
@IBOutlet weak var hedgeImage: UIImageView!
@IBOutlet weak var hideView: UIView!
var sideBar:SideBar = SideBar()
override func viewDidLoad() {
}
ProfileViewController.swift
class ProfileViewController: UIViewController {
@IBOutlet weak var ouput: UILabel!
@IBOutlet weak var name: UITextField!
@IBAction func nameChange(sender: AnyObject) {
ouput.text = name.text
}
}
答案 0 :(得分:1)
执行此操作的众多方法之一:您可以向textField添加一个观察者并更新一个包含名称文本的变量,然后您可以将其发送到新的vc以准备segue。这是一个样本
class ViewController: UIViewController {
var nameRecieved:String?
@IBOutlet weak var name: UILabel!{
didSet{
if nameRecieved != nil { name.text = nameRecieved }
}
}
}
class ProfileViewController: UIViewController, UITextFieldDelegate {
var nameHolder:String?
@IBOutlet weak var name: UITextField! { didSet{ name.delegate = self } }
//notification
var nameTextFieldObserver: NSObjectProtocol?
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
let center = NSNotificationCenter.defaultCenter()
let q = NSOperationQueue.mainQueue()
nameTextFieldObserver = center.addObserverForName(UITextFieldTextDidChangeNotification, object: name, queue: q){
notification in
self.nameHolder = self.name.text
}
}
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
if nameTextFieldObserver != nil { NSNotificationCenter.defaultCenter().removeObserver(nameTextFieldObserver!) }
}
//Here you can pass the value of nameHolder to the other vc's var nameRecieved in your prepare for segue
}
答案 1 :(得分:0)
你需要抓住你的ViewController
对象并传递值。像这样:
@IBAction func nameChange() {
ouput.text = name.text
// given both your views have a same parent
// and this view is the first child
let myViewController = parentViewController!.childViewControllers[1]
myViewController.name.text = name.text
myViewController.printLabelText()
}