【问题标题】:NSArray of UITextFields, how can i find a specific one?UITextFields 的 NSArray,我怎样才能找到一个特定的?
【发布时间】:2011-11-30 23:34:41
【问题描述】:

我用 UITextFields 加载了一个数组,它们都是动态(和本地)创建的,我需要保持对它们的引用以备后用。

我的文本字段是名称、textField01、textField02 等。

我想拉出 textField02 并更改数据。我怎样才能通过我的数组搜索得到它?我试过“isEqualToString”但失败了。我不能使用 .tag 因为我正在使用它来做其他事情。我无法与 .text 值进行比较,因为我不知道它将是什么(由用户输入)。

【问题讨论】:

    标签: iphone objective-c ios


    【解决方案1】:

    你可以在这里使用NSDictionary。为每个文本字段添加一个命名键,以便稍后用于检索。

    【讨论】:

    • 我正在创建文本字段(它不是实例变量),用户将输入数据,当他点击保存时,我需要从文本字段中检索该数据。所以我需要保留那个文本字段对象。
    • NSDictionary 将保留对您存储在其中的对象的引用,直到它被释放。有什么问题?
    • 哦,你的意思是值是文本字段吗?
    • 是的,只需保留NSMutableDictionary 的实例并在创建文本字段时添加它们。 [someMutableDictionary setObject:newlyCreatedTextField forKey:@"FirstTextFieldKey"];
    【解决方案2】:

    如果您按顺序命名它们,为什么不将它们添加到NSMutableArray

    然后你可以通过索引来获取它们。

    NSMutableArray *textFields = [[NSMutableArray alloc] initWithCapacity:10];
    UITextField *textField = nil;
    
    for (int i = 0; i < 10; i++) {
        textField = [[UITextField alloc] initWithFrame:myFrame];
        [self.view addSubview:textField];
        [textFields addObject:textField];
        [textField release]; textField = nil;
    }
    

    稍后

    UITextField *myTextField = [textFields objectAtIndex:1];
    

    【讨论】:

    • 我想过这样做,但我不确定这是否是最安全的方法。如果我改变了文本字段的数量,我也必须重做检索代码。如果我搜索,我也不会。
    猜你喜欢
    • 2017-08-11
    • 2011-07-27
    • 1970-01-01
    • 2014-06-10
    • 2016-09-11
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    相关资源
    最近更新 更多