ViewController 的 Monotouch UIPickerView ValueChange 事件
Monotouch UIPickerView ValueChange Event for ViewController
我想在 UIPickerView
更改其任何组件中的值时获取事件,以便我的 UIViewController
可以更改 Labels
。我只遇到过 PickerView
模型提供的一种有用方法:
public override void Selected(UIPickerView pickerView, nint row, nint component)
当发生任何变化时,模型中都会反映出相应的变化。但是,如果我想将这些更改反映回 ViewController
,我该怎么办?我想像 Delegates 在 iOS 中那样做这项工作。我对 c# 不是很熟悉。任何帮助表示赞赏。谢谢。
public partial class ViewController : UIViewController
{
public override void ViewDidLoad()
{
base.ViewDidLoad();
// Perform any additional setup after loading the view, typically from a nib.
setupHandlers();
}
void setupHandlers()
{
pickerModel = new UnitPickerViewModel();
pickerModel.Items = lengthArray;
pickerModel.setDataForSecondComponent(lengthArray2);
pickerView = new UIPickerView();
pickerView.BackgroundColor = UIColor.LightGray;
pickerView.DataSource = pickerModel;
}
}
您可以创建弱和强 Obj-C 风格的代表:
强代表:
在您的UIViewController
class:
中创建嵌套UIPickerViewDelegate
class
class PickerDelegate : UIPickerViewDelegate
{
public override void Selected(UIPickerView pickerView, nint row, nint component)
{
base.Selected(pickerView, row, component);
Console.WriteLine(row.ToString());
}
}
创建委托并将其分配给您的 UIPickerView
:
var picker = new UIPickerView(UIScreen.MainScreen.Bounds);
picker.DataSource = this;
picker.Delegate = new PickerDelegate();
弱代理:
跳过嵌套的 class 并将 UIPicker selected 方法添加到您的 UIViewController
并用 Foundation.Export
:
标记
[Export("pickerView:didSelectRow:inComponent:")]
public void Selected(UIPickerView pickerView, nint row, nint component)
{
Console.WriteLine(row.ToString());
}
将您的 UIViewController
指定为弱代理:
var picker = new UIPickerView(UIScreen.MainScreen.Bounds);
picker.DataSource = this;
picker.WeakDelegate = this;
Add(picker);
我想在 UIPickerView
更改其任何组件中的值时获取事件,以便我的 UIViewController
可以更改 Labels
。我只遇到过 PickerView
模型提供的一种有用方法:
public override void Selected(UIPickerView pickerView, nint row, nint component)
当发生任何变化时,模型中都会反映出相应的变化。但是,如果我想将这些更改反映回 ViewController
,我该怎么办?我想像 Delegates 在 iOS 中那样做这项工作。我对 c# 不是很熟悉。任何帮助表示赞赏。谢谢。
public partial class ViewController : UIViewController
{
public override void ViewDidLoad()
{
base.ViewDidLoad();
// Perform any additional setup after loading the view, typically from a nib.
setupHandlers();
}
void setupHandlers()
{
pickerModel = new UnitPickerViewModel();
pickerModel.Items = lengthArray;
pickerModel.setDataForSecondComponent(lengthArray2);
pickerView = new UIPickerView();
pickerView.BackgroundColor = UIColor.LightGray;
pickerView.DataSource = pickerModel;
}
}
您可以创建弱和强 Obj-C 风格的代表:
强代表:
在您的UIViewController
class:
UIPickerViewDelegate
class
class PickerDelegate : UIPickerViewDelegate
{
public override void Selected(UIPickerView pickerView, nint row, nint component)
{
base.Selected(pickerView, row, component);
Console.WriteLine(row.ToString());
}
}
创建委托并将其分配给您的 UIPickerView
:
var picker = new UIPickerView(UIScreen.MainScreen.Bounds);
picker.DataSource = this;
picker.Delegate = new PickerDelegate();
弱代理:
跳过嵌套的 class 并将 UIPicker selected 方法添加到您的 UIViewController
并用 Foundation.Export
:
[Export("pickerView:didSelectRow:inComponent:")]
public void Selected(UIPickerView pickerView, nint row, nint component)
{
Console.WriteLine(row.ToString());
}
将您的 UIViewController
指定为弱代理:
var picker = new UIPickerView(UIScreen.MainScreen.Bounds);
picker.DataSource = this;
picker.WeakDelegate = this;
Add(picker);