当我按下视图#1中的按钮(例如“PurpleFruitBtn”)并且我想要在另一个视图中更改文本(在其他几个其他屏幕之后)以显示“选择:葡萄”。
尝试了一些东西,但它们不起作用。
如何更有经验的人知道他们在做什么呢?
谢谢,一个谦卑的孩子,他越来越了解他不太了解。
您可以在View#2中定义一个字符串变量,然后当您切换到View#2时将其放在View#1中,就像这样enter image description here
页面切换完成后,第二页上的标签将获取PhoneNumbers的变量并显示它。
您可以定义用于在视图之间传输数据的公共类:
using System;
namespace XamarinIosDataPass {
public class CommonClass {
public static string value;
}
}
然后在view1中,单击按钮时更新数据:
partial void BtnSend_TouchUpInside(UIButton sender) {
CommonClass.value = txtInput.Text;
}
并根据Common类的值更新View 2中的标签:
public override void ViewDidLoad() {
base.ViewDidLoad();
lblDisplay.Text = CommonClass.value;
}
有关更多详细信息,请参阅此link。
快乐的编码!
您还可以使用NSNotification
在两个视图之间发送消息和传递值。
在视图#1中
如果要更改视图#2中的标签,请发布通知
UIButton button = new UIButton(new CGRect(100, 300, 100, 50));
button.SetTitle("PurpleFruit",UIControlState.Normal);
button.SetTitleColor(UIColor.White, UIControlState.Normal);
button.BackgroundColor = UIColor.Blue;
button.TouchUpInside += (sender, e) =>
{
NSDictionary dic =NSDictionary.FromObjectAndKey(new NSString("value"),new NSString(button.TitleLabel.Text)) ;
NSNotification notification = NSNotification.FromName("ChangeValue",null,dic); //pass the string as a parameter
NSNotificationCenter.DefaultCenter.PostNotification(notification);
};
在视图#2
在ViewWillAppear
方法中注册通知
public override void ViewWillAppear(bool animated)
{
base.ViewWillAppear(animated);
NSNotificationCenter.DefaultCenter.AddObserver(this,new Selector("ChangeValue:"),new NSString("ChangeValue") ,null);
}
[Export("ChangeValue:")]
public void ChangeValue(NSNotification notification)
{
Console.Write(notification.UserInfo.ObjectForKey(new NSString ("value")));
// now you can change the label.text
}
注意:通知名称必须相同(就像上面代码中的
ChangeValue
一样)。在发布之前,您应首先注册通知。否则,视图#2无法接收通知。
有关NSNotification的更多详细信息,请参阅here