在 MonoTouch 中获取多个文本字段的值
本文关键字:文本 字段 MonoTouch 获取 | 更新日期: 2023-09-27 17:56:17
我有 4 个TextFields
,我想遍历它们以检查它们是否有值。TextFields
是用我的TableViewController
GetCell
方法创建的。
public UITextField TextField;
public override UITableViewCell GetCell (UITableView tableView, NSIndexPath indexPath)
{
if (elements [indexPath.Row].Type == "textField") {
EditField element = elements [indexPath.Row] as EditField;
NSString FieldID = new NSString ("EditField");
UITableViewCell cell = tableView.DequeueReusableCell (FieldID);
cell.SelectionStyle = UITableViewCellSelectionStyle.None;
var setTextField = cell.ViewWithTag (99) as UITextField;
if (setTextField == null) {
TextField = new UITextField ();
TextField.Placeholder = element.Placeholder;
TextField.Tag = 99;
TextField.SecureTextEntry = element.Secure;
cell.AddSubview (TextField);
EditFieldProperties ();
}
cell.TextLabel.Text = element.Label;
cell.DetailTextLabel.Hidden = true;
return cell;
}
}
如何循环所有TextFields
以获取所有值?我想我需要将它们存储在array
或dictionary
中,但我不知道该怎么做。
我所能得到的只是使用以下代码的最后一TextField
的值:
Console.WriteLine(TextField.Text);
我的建议是创建一个文本字段列表,因此在代码中的某个位置定义列表并在构造函数中进行初始化
public List<UITextField> YourTextFields = new List<UITextField>();
public YouTableViewSourceConstructor()
{
foreach(var elementItem in elements.Where(e => e.Type == "textField").ToList())
{
YourTextFields.Add(new UITextField(){Tag = 99});
}
}
然后在 GetCell 方法中
public override UITableViewCell GetCell (UITableView tableView, NSIndexPath indexPath)
{
//some your code
if(cell.ViewWithTag (99) != null)
{
cell.RemoveSubview(cell.ViewWithTag (99));
}
var textField = YourTextFields [elements.Where(e => e.Type == "textField").ToList().IndexOf(elements [indexPath.Row])];
cell.AddSubview (textField);
//some your code
}
因此,在您的文本字段中,您将拥有所有 4 个文本字段,您可以轻松访问它们
只需为
cell 创建一个单独的类并将其命名为"CustomCell"并从 UITableViewCell
继承它。
在其构造函数中创建四个文本字段,并通过覆盖UITableViewCell
的"LayoutSubview"函数来设置这些文本字段的位置,如下所示:
public class CustomCell : UITableViewCell
{
CustomCell
{
//Create text fields here
UITextView TextField1=new UITextView();
this.AddSubView(TextField1);
}
public override void LayoutSubviews ()
{
// set location of text fields in cell as below
TextField1.Frame=new RectangleF( 32, 8, 60, 15);
}
}//end class
我希望这肯定会对您有所帮助。
我通过添加一个新的List
UITextFields
来修复它,如下所示:
public List<UITextField> TextFieldList = new List<UITextField>();
并像这样循环它们:
foreach (UITextField item in TextFieldList) {
if (item.Text == "") {
item.BackgroundColor = UIColor.Red;
} else {
Console.WriteLine (item.Text);
}
}