在MonoTouch中获取多个TextField的值

时间:2014-04-03 09:37:51

标签: c# ios xamarin.ios uitextfield

我有4个TextFields,我想循环遍历它们以检查它们是否有值。 TextFields是使用GetCell中的TableViewController方法创建的。{/ 1}。

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

3 个答案:

答案 0 :(得分:1)

我建议创建一个文本字段列表,因此在列表中的某些位置和构造函数中的init中定义列表

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
}

因此,在YourTextFields中,您将拥有所有4个文本字段,并且您可以轻松访问它们

答案 1 :(得分:0)

只需为单元格创建一个单独的类,并将其命名为“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

我希望这肯定能帮助你。

答案 2 :(得分:0)

我通过添加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);
    }
}

像这样循环它们:

{{1}}