Как ссылаться на iOS UITextFields - PullRequest
1 голос
/ 02 января 2012

Я создаю приложение типа кроссворда и использую следующий код для создания сетки:

- (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).

1 Ответ

2 голосов
/ 02 января 2012

Использование тегов должно быть хорошо.Чтобы получить UITextField, вы должны сделать следующее:

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

Это приведёт UIView к более конкретному UITextField, что нормально, так как вы знаете, что использовали его.Убедитесь, что ваши теги начинаются с нуля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...