CustomCell 中的 TextField Change 事件
TextField Change event in a CustomCell
我一直在 Xamarin.iOS
平台上开发 CustomCell。以下代码工作正常。我有 tableItems,它是存储 Start
和 End
值的列表。
我还有一个 class(SettingCustomCell
),我在其中以编程方式创建了 TextFields 以显示 Start
和 End
值。
我想知道当用户在我当前的实现中更改 TextField 中的 Start
或 End
值时,我如何 detect/capture。
MainTableViewController
tableItems.Add (new TableItem() {Start=1000, End=4000});
tableItems.Add (new TableItem() {Start=4000, End=6000});
public override UITableViewCell GetCell (UITableView tableView, NSIndexPath indexPath)
{
SettingsCustomCell cell = tableView.DequeueReusableCell (cellIdentifier) as SettingsCustomCell;
if (cell == null) {
cell = new SettingsCustomCell (cellIdentifier);
}
cell.UpdateCell (tableItems [indexPath.Row].Start, tableItems [indexPath.Row].End);
return cell;
}
SettingsCustomCell
public CustomCell (NSString cellId) : base (UITableViewCellStyle.Default, cellId)
{
SelectionStyle = UITableViewCellSelectionStyle.None;
firstLabel = new UITextField ();
secondLabel = new UITextField ();
ContentView.Add (firstLabel);
ContentView.Add (secondLabel);
}
public void UpdateCell (int caption, int subtitle)
{
firstLabel.Text = caption.ToString();
secondLabel.Text = subtitle.ToString();
}
在表格单元格中创建事件处理程序。当您的 UITextField 文本更改时调用此事件处理程序。
public EventHandler<bool> EditingChanged;
//some code here
firstTextField.ValueChanged += (s, e) => {
if(EditingChanged!=null)
EditingChanged(this,true);
}
在您的数据源中订阅 EditingChanged 事件并创建另一个事件处理程序,它将在执行 EditingChanged 时调用。
public EventHandler<bool> SourceEditingChanged;
public override UITableViewCell GetCell (UITableView tableView, NSIndexPath indexPath)
{
SettingsCustomCell cell = tableView.DequeueReusableCell (cellIdentifier) as SettingsCustomCell;
if (cell == null) {
cell = new SettingsCustomCell (cellIdentifier);
}
cell.UpdateCell (tableItems [indexPath.Row].Start, tableItems [indexPath.Row].End);
cell.EditingChanged += {
if(SourceEditingChanged!=null)
SourceEditingChanged(this,true);
};
return cell;
}
从 viewController 订阅您的 SourceEditingChange 事件。
MySource.SourceEditingChange += (s,e) =>{
//Your Code here
}
我一直在 Xamarin.iOS
平台上开发 CustomCell。以下代码工作正常。我有 tableItems,它是存储 Start
和 End
值的列表。
我还有一个 class(SettingCustomCell
),我在其中以编程方式创建了 TextFields 以显示 Start
和 End
值。
我想知道当用户在我当前的实现中更改 TextField 中的 Start
或 End
值时,我如何 detect/capture。
MainTableViewController
tableItems.Add (new TableItem() {Start=1000, End=4000});
tableItems.Add (new TableItem() {Start=4000, End=6000});
public override UITableViewCell GetCell (UITableView tableView, NSIndexPath indexPath)
{
SettingsCustomCell cell = tableView.DequeueReusableCell (cellIdentifier) as SettingsCustomCell;
if (cell == null) {
cell = new SettingsCustomCell (cellIdentifier);
}
cell.UpdateCell (tableItems [indexPath.Row].Start, tableItems [indexPath.Row].End);
return cell;
}
SettingsCustomCell
public CustomCell (NSString cellId) : base (UITableViewCellStyle.Default, cellId)
{
SelectionStyle = UITableViewCellSelectionStyle.None;
firstLabel = new UITextField ();
secondLabel = new UITextField ();
ContentView.Add (firstLabel);
ContentView.Add (secondLabel);
}
public void UpdateCell (int caption, int subtitle)
{
firstLabel.Text = caption.ToString();
secondLabel.Text = subtitle.ToString();
}
在表格单元格中创建事件处理程序。当您的 UITextField 文本更改时调用此事件处理程序。
public EventHandler<bool> EditingChanged; //some code here firstTextField.ValueChanged += (s, e) => { if(EditingChanged!=null) EditingChanged(this,true); }
在您的数据源中订阅 EditingChanged 事件并创建另一个事件处理程序,它将在执行 EditingChanged 时调用。
public EventHandler<bool> SourceEditingChanged; public override UITableViewCell GetCell (UITableView tableView, NSIndexPath indexPath) { SettingsCustomCell cell = tableView.DequeueReusableCell (cellIdentifier) as SettingsCustomCell; if (cell == null) { cell = new SettingsCustomCell (cellIdentifier); } cell.UpdateCell (tableItems [indexPath.Row].Start, tableItems [indexPath.Row].End); cell.EditingChanged += { if(SourceEditingChanged!=null) SourceEditingChanged(this,true); }; return cell; }
从 viewController 订阅您的 SourceEditingChange 事件。
MySource.SourceEditingChange += (s,e) =>{ //Your Code here }