Я создаю приложение типа кроссворда и использую следующий код для создания сетки:
- (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), составляющих строки кроссворда, точки - черные квадраты. UIView
являются держателями для UITextField
, каждый UIView
и его UITextField
имеют идентичный ключ.
Здесь я застрял. Я получаю предупреждение Incompatible pointer types initializing UITextField with an expression type UIView
Я думал, что это подкласс?
NSString *guess = userGuessTextField.text;
не ходи.
ВОПРОС:
Как я могу сделать кучу UITextField
(s), а затем получить доступ к ним и их значениям позже?
( EDITED для включения всего метода IBAction
).