在“自我”中有多个项目?

时间:2013-12-27 03:25:34

标签: ios objective-c uitextfield self

我只是想知道是否有办法在一个“自我”声明中简化或拥有多个项目。 我目前有大约5个UITextfields,代码只是重复它自己,但只针对不同的文本字段。

代码如下:

self.cell1Field1Dismiss.inputAccessoryView = numberToolbar;
self.cell1Field2Dismiss.inputAccessoryView = numberToolbar;
self.cell2Field1Dismiss.inputAccessoryView = numberToolbar;
self.cell2Field2Dismiss.inputAccessoryView = numberToolbar;
self.cell3Field1Dismiss.inputAccessoryView = numberToolbar;
self.cell3Field2Dismiss.inputAccessoryView = numberToolbar;
self.cell4Field1Dismiss.inputAccessoryView = numberToolbar;
self.cell4Field2Dismiss.inputAccessoryView = numberToolbar;
self.cell5Field1Dismiss.inputAccessoryView = numberToolbar;
self.cell5Field2Dismiss.inputAccessoryView = numberToolbar;

有没有办法得到类似的东西:(由于某种原因这不起作用)

self.cell1Field1Dismiss, cell1Field2Dismiss, etc... .inputAccessoryView = numberToolbar

4 个答案:

答案 0 :(得分:3)

使用IBOutletCollection来保存对所有文本字段的引用,而不是单个IBOutlet。这与连接IBOutlets的方式相同。

声明一个像这样的属性

@property (nonatomic, strong) IBOutletCollection(UITextField) NSArray *textFields;

然后遍历所有文本字段并设置您想要的任何属性。

for (UITextField *textField in self.textFields) {
    textField.inputAccessoryView = numberToolbar;
}

答案 1 :(得分:2)

据@Kevin说,这是我的升级版:

[self.textFields enumerateObjectsUsingBlock:^(UITextField *textField, NSUInteger idx, BOOL *stop) {
    textField.inputAccessoryView = numberToolbar;
}];

个人推荐收集类的阻止方法(感谢@Patrick Goley)。 有很多问题在讨论: When to use enumerateObjectsUsingBlock vs. for http://www.mikeabdullah.net/slow-block-based-dictionary-enumeration.html 最后(我认为是对的): http://lists.apple.com/archives/objc-language/2012/Sep/msg00012.html

答案 2 :(得分:0)

如果您希望视图中的所有文本字段具有相同的inputAccessoryView,则可以执行以下操作:

for (UIView *view in[self.view subviews]) {
    if ([view isKindOfClass:[UITextField class]]) {
        UITextField *textField = (UITextField *)view;
        textField.inputAccessoryView = numberToolbar;
    }
}

答案 3 :(得分:0)

尝试以下代码。与为integer / float / ..变量赋值类似,您可以像下面这样分配。

self.cell1Field1Dismiss.inputAccessoryView = self.cell1Field2Dismiss.inputAccessoryView = self.cell2Field1Dismiss.inputAccessoryView = .......... = numberToolbar

希望这会对你有所帮助..如果它不起作用,请告诉我..