ios - 如何引用 iOS UITextFields

标签 ios cocoa-touch uitextfield

我正在创建一个填字游戏类型的应用程序,并使用以下代码制作网格:

- (void) viewDidLoad{
    [...]
    //we are inside 2 loops (puzzleRow and i), 15 rows (puzzleRow), 15 cols (i)...

    UITextField *inputBox = [[UITextField alloc] initWithFrame:letterFrame];
    key = (puzzleRow * 100) + i;
    [inputBox setTag:key];
    [....]
}

稍后,我想引用 UITextField 并获取它们的值,根据正确答案检查它等。

 - (IBAction)checkSolutionButton:(id)sender {
int i = 1;
for (id obj in self.Puzzle) {
    int len = [obj length];
    for(int j = 0; j < len; j++){
        NSRange range = NSMakeRange(j, 1);
        NSString *answer = [obj substringWithRange:range];
        int key = (i * 100) + j;
        UIView *userGuessSquare = [self.view viewWithTag:key];
        UITextField *userGuessTextField = [userGuessSquare viewWithTag:key];
        NSString *guess = userGuessTextField.text;
        NSLog(@"guess: %@", guess);
    }
}

self.Puzzle 是一个 NSArray 字符串 (ANSWER1..ANSWER2,​​ANSWER3..ANSWER4) 构成填字游戏的行,点是黑色方 block 。 UIViewUITextField 的持有者,每个 UIView 及其 UITextField 都有一个相同的键。

我卡在这里了。我收到警告 Incompatible pointer types initializing UITextField with an expression type UIView 我认为这是一个子类?

 NSString *guess = userGuessTextField.text;

是不行的。

问题: 我怎样才能制作一堆 UITextField(s) 然后访问它们和它们的值?

(编辑以包含整个IBAction 方法)。

最佳答案

使用标签应该没问题。要获取 UITextField,您应该这样做:

UITextField *userGuessTextField = (UITextField*) [self.view viewWithTag:key];
NSString *guess = userGuessTextField.text;

这会将 UIView 转换为更具体的 UITextField,这没问题,因为您知道您已经使用过它。确保您的标签也从 0 开始。

关于ios - 如何引用 iOS UITextFields,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8697410/

相关文章:

ios - 检测聊天功能何时为 "user is typing"的最佳实践?

iphone - 在 Xcode 中将图像添加到 UITextField 中?

ios - 工具栏上的“从图像库中选择”按钮被停用

ios - Dropbox 与 iOS 集成

objective-c - UIImagePickerController Camera Device Front 每隔一段时间才工作

objective-c - 如果比较两个 NSString 对象时 "a == b"为假

swift - 如何在 Swift 3 中修复我的自定义 UITextField 对象?

iphone - XML 阅读器 : get attributes value from NSDictionary

ios - UILocalNotification 延迟 1 小时

iphone - CoreData关系澄清: How to effectively set an inverse relationship