我正在创建一个填字游戏类型的应用程序,并使用以下代码制作网格:
- (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 。 UIView
是 UITextField
的持有者,每个 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/