我有一个带有自定义单元格的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;
}
}
}
答案 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
}
}