2012-01-02 53 views
1

我創建一個縱橫字謎型應用程序,現在用的是下面的代碼,使電網:如何引用的iOS UITextFields

- (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)體質測試一個縱橫字謎的行,點是黑色的方塊。 UIViewUITextField的持有者,每個UIView及其UITextField具有相同的密鑰。

在這裏,我卡住了。我收到一個警告Incompatible pointer types initializing UITextField with an expression type UIView我以爲它是一個子類?

NSString *guess = userGuessTextField.text; 

是不行的。

問題: 如何製作一組UITextField(s),然後訪問它們及其值?

編輯包括整個IBAction方法)。

+1

如果您確定從'viewWithTag:'返回的視圖始終是'UITextField',那麼您可以明確地將其轉換爲'UITextField'類以使警告無提示。 – tia 2012-01-02 04:58:47

回答

2

使用標籤應該沒問題。要獲得的UITextField你應該這樣做:

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

這將鑄就了UIView到具體的UITextField,因爲你知道你已經使用了這是確定。確保你的標籤也從0開始。

+0

謝謝。這工作。其中最有幫助的部分是如何投射,實際上,這正在殺死我。 – axlotl 2012-01-16 20:38:32