2014-07-11 21 views
0

我動態創建文本字段,並且每個文本字段tag.Now,我試圖使用標籤來獲取文本框的文本,但它返回的UIButton和我的應用程序越來越crashed.How我可以從標籤中獲取文字嗎?請幫幫我。 這裏是我的代碼來獲取文本:如何從文本框標記文字iPhone

UITextField *textValue = (UITextField *)[self.view viewWithTag:textField.tag]; 
NSString *chkText = textValue.text; 

NSLog(@"entered Text %@",chkText); 

我的應用程序在該行崩潰:

NSString *chkText = textValue.text; 

和錯誤是: - [UIButton的文本]:無法識別的選擇發送到實例

+1

可能是您的textField標記與uibutton衝突。 –

+0

ü均文本字段分配相同的標籤,並解開 –

+1

你必須檢查分配標籤,並確保標籤的UI元素的獨特。 – rishi

回答

0

將textfield標記設置爲任何唯一值,如「346」。 (避免使用0作爲標記值)。並使用此 -

UITextField *textValue = nil; 
id myObj = [self.view viewWithTag:yourTagValue]; 
if([myObj isKindOfClass:[UITextField class]]) 
{ 
    textValue = (UITextField*)myObj; 
    NSString *chkText = textValue.text; 
    NSLog(@"entered Text %@",chkText); 
} 
0

從你的代碼(viewWithTag:textField.tag),如果您可以訪問您的textField那麼你爲什麼要訪問一次好嗎?但是,以下說明將幫助您:

您已將相同標記分配給您的UIButton控件中的一個。還請確保textField.tag大於零

下面的代碼將修復崩潰,但是,它不會解決您的問題。

UITextField *textFeild = [[self.view viewWithTag:textFieldTag] isKindOfClass:[UITextField class]]?(UITextField *)[self.view viewWithTag:textFieldTag]:nil; 

if(nil != textFeild) 
{ 
    NSString *chkText = textFeild.text; 
    NSLog(@"entered Text %@",chkText); 
} 
else 
{ 
    NSLog(@"textFeild is null"); 
} 
0

當你使用標籤時,使用NS_ENUM是個好習慣。

NS_ENUM(NSUInteger, TEST_TAGS) 
{ 
    TAG_TEXT_INPUT, 
    TAG_BTN_GO, 
}; 

然後你可以使用它。

[textField setTag:TAG_TEXT_INPUT]; 
+0

和自枚舉的第一個值是0'[查看viewWithTag:TAG_TEXT_INPUT]'將返回沒有標籤的第一個視圖。這不一定是textField。 –

+0

的確如此。爲了避免這種情況,您可以設置第一個值1.簡單? – Ryan

0

首先檢查將這個文本字段添加到哪個UIVIew作爲子視圖。

採取這一UIView的實例,並調用viewWithTag方法那麼你的代碼工作。

1

的主要問題是您的視圖包含按鈕爲好。所以當你試圖訪問它。它正在返回UIButton對象。因此,檢查條件是按鈕類型還是文本字段類型對象總是更好。請嘗試以下方法: -

id nextTextField = [self.view viewWithTag:textField.tag]; 
nextTextField=([nextTextField isKindOfClass:[UITextField class]]) ? nextTextField.text : nextTextField.title; 
NSLog(@"%@", nextTextField);