行选择在表格单元格中编辑文本字段

时间:2014-03-13 16:19:13

标签: ios xamarin.ios xamarin tableview

我有一个带有自定义单元格的TableView,单元格中有一个标签和一个文本字段。我想在选择行时聚焦文本字段。

任何人都知道如何在此代码中解决此问题:

public override void RowSelected (UITableView tableView, NSIndexPath indexPath)
{
    //EDIT TEXTFIELD FROM SELECTED ROW
}

我的textfield确实在自定义单元类中。 我试过这个:

CustomCell cell = tableView.CellAt (indexPath) as CustomCell;
cell.textField.BecomeFirstResponder();

但是找不到textField。

这是我的CustomCell类:

using System;
using System.Drawing;
using MonoTouch.Foundation;
using MonoTouch.UIKit;

namespace Forms.iOS
{
public class CustomCell : UITableViewCell
{

    UITextField textField;
    UILabel label;

    public CustomCell (NSString cellId) : base (UITableViewCellStyle.Value1, cellId)
    {
        textField = new UITextField ();
        label = new UILabel ();
        ContentView.Add (label);
        ContentView.Add (textField);
    }

    public void UpdateCell (string textFieldValue, string labelValue)
    {
        DetailTextLabel.Text = "Dit is echt nutteloze tekst maar geen idee waarvoor ik dit hier nu neer zet maar zodat het in ieder geval te veel is.";
        textField.Placeholder = textFieldValue;
        TextLabel.Text = labelValue;
    }

    public override void LayoutSubviews ()
    {
        base.LayoutSubviews ();

        DetailTextLabel.Hidden = true;
        RectangleF detailFrame = DetailTextLabel.Frame;
        textField.Frame = detailFrame;
    }

}
}

1 个答案:

答案 0 :(得分:3)

我相信在选择行时你需要让文本字段成为第一个响应者。

yourUITextField.BecomeFirstResponder();

如果您的UITextField是某种形式的自定义单元类的成员,您可以尝试使用CellAt抓取该位置的单元格,将其转换为自定义类并以此方式访问它。

public override void RowSelected (UITableView tableView, NSIndexPath indexPath)
{
    CustomUITableViewCellClass customCell = tableView.CellAt(indexPath) as CustomUITableViewCellClass;

    if (customCell !=null)
    {
        customCell.yourUITextField.BecomeFirstResponder();
    }
    else
    {
        // Cell at indexPath cannot be cast to CustomUITableViewCellClass
    }
}