在 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以获取所有值?我想我需要将它们存储在arraydictionary中,但我不知道该怎么做。

我所能得到的只是使用以下代码的最后一TextField的值:

Console.WriteLine(TextField.Text);

在 MonoTouch 中获取多个文本字段的值

我的建议是创建一个文本字段列表,因此在代码中的某个位置定义列表并在构造函数中进行初始化

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);
    }
}