【发布时间】:2012-01-02 04:31:04
【问题描述】:
我正在创建一个填字游戏类型的应用程序,并使用以下代码制作网格:
- (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),然后再访问它们和它们的值?
(已编辑以包含整个 IBAction 方法)。
【问题讨论】:
-
如果您确定从
viewWithTag:返回的视图将始终为UITextField,那么您可以将其显式转换为UITextField类以使警告静音。
标签: ios cocoa-touch uitextfield