如何在swift中只使用一个ViewController将数据从一个UIView传递到另一个UIView?

时间:2018-03-27 09:50:41

标签: ios swift uiview

我正在创建一个简单的登录表单,其中单击“登录”按钮时,textfield中的用户名应显示在另一个UIView中。

如何从UIViewA的文本字段传递数据并将文本字段中的值显示到UIViewB中的标签?

只有一个ViewController,其中UIViews将互换,因此不需要segue。

这是登录UIView的按钮功能:

class UIView1: UIView {
        @IBAction func buttontohome(_ sender: Any) {
            if (usernamebox.text == username || usernamebox.text == email) && passwordbox.text == password
            {
               // load UIView2 and send username string to UIView2 label
            }
            else {
                loadViewFromNib()
                loginfaillabel.text = "Login failed"
            }

        }
        }

这是第二个UIView,其中登录成功后应出现用户名字符串:

 class UIView2: UIView {

       @IBOutlet var labelforpassedvalue: UILabel!

        var usernamelabel = String()

func viewDidLoad() {
        super.viewDidLoad()
             labelforpassedvalue.text = "Welcome Bob, " + usernamelabel

    }
}

请帮忙......

1 个答案:

答案 0 :(得分:0)

我同意luk2302;这是有缺陷的设计,你可能想重新考虑一下你的方式。

那就是说,如果你以这种方式去做,一种方法就是在你的主ViewController中声明一个可选的,如下所示:

var usernameLabelText: String?

然后在调用buttontohome操作时更新其值:

usernameLabelText = usernamebox.text

我会留给你弄清楚如何用新的替换旧的UIView。