我正在尝试创建一个继承自UIPickerViewModel的选择器模型(我将澄清这是我使用Xamarin开发iOS的新手),该模型在其构造函数中带有一个控制参数,它将在其中显示被选择的元素。
我希望能够传递文本字段或标签,而不必为每个字段创建两个不同的模型。是否可以使用基类代替包含Text属性的具体对象?
这是我当前的模型课:
using System;
using TCPClient.TCP;
using UIKit;
namespace TCPClient.Models
{
public class EncodingPickerModel : UIPickerViewModel
{
private readonly UITextField _targetControl;
public EncodingPickerModel(UITextField targetControl)
{
_targetControl = targetControl;
}
public override nint GetComponentCount(UIPickerView pickerView)
{
return 1;
}
public override nint GetRowsInComponent(UIPickerView pickerView, nint component)
{
return Enum.GetNames(typeof(EncodingType)).Length;
}
public override string GetTitle(UIPickerView pickerView, nint row, nint component)
{
if (component == 0) return row.ToString();
return ((EncodingType)Convert.ToInt32(row)).ToString("F");
}
public override void Selected(UIPickerView pickerView, nint row, nint component)
{
_targetControl.Text = ((EncodingType)Convert.ToInt32(row)).ToString("F");
}
}
}
我想做的是UITextField _targetControl,它具有一个具有Text属性的通用对象,但是我不知道哪个是基础对象。 UIControl确实没有text属性。
非常感谢您。
答案 0 :(得分:0)
您可以接受返回返回所选Action<EncodingType>
的{{1}}而不是传递特定的控件。这样,消费者可以决定需要使用选定的值执行什么操作,并使EncodingType
对于任何控件都具有灵活性:
EncodingPickerModel