我有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
以获取所有值?我想我需要将它们存储在array
或dictionary
中,但我不知道该怎么做。
我所能获得的是使用此代码的最后TextField
的值:
Console.WriteLine(TextField.Text);
答案 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}}