如何按视图#1中的按钮更改视图#2中的标签(Xamarin iOS)

问题描述 投票:0回答:3

当我按下视图#1中的按钮(例如“PurpleFruitBtn”)并且我想要在另一个视图中更改文本(在其他几个其他屏幕之后)以显示“选择:葡萄”。

尝试了一些东西,但它们不起作用。

如何更有经验的人知道他们在做什么呢?

谢谢,一个谦卑的孩子,他越来越了解他不太了解。

c# .net xamarin xamarin.ios
3个回答
0
投票

您可以在View#2中定义一个字符串变量,然后当您切换到View#2时将其放在View#1中,就像这样enter image description here

页面切换完成后,第二页上的标签将获取PhoneNumbers的变量并显示它。


0
投票

您可以定义用于在视图之间传输数据的公共类:

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

快乐的编码!


0
投票

您还可以使用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

© www.soinside.com 2019 - 2024. All rights reserved.