2013-11-25 14 views
0

爲了得到一個參考的UIViewController中這是在導航控制器的根我這樣做:如何設置導航控制器根目錄下的UITextField文本?

UIViewController *root = (UIViewController *)[self.navigationController.viewControllers objectAtIndex:0]; 

一旦我有一個參考,我怎麼可以設置爲UITextField這是對根視圖中的文本?我嘗試以下,但它不工作:

NSString *str = @""; 
[[root txtID] setText:str]; 

的Xcode顯示了錯誤:「對‘UIViewController中’不可見@interface聲明選擇‘txtID’」。

+0

澄清「不起作用」(任何人可以在問題中使用的最無用的詞)。它會崩潰嗎?任何錯誤?文字是不是更新? – rmaddy

+0

來自Xcode的錯誤是「沒有可見@interface for'UIViewController'聲明選擇器'txtID'」。 – lepton

+0

編輯並在您的問題中添加此錯誤,不僅在評論中 – Ilario

回答

1

問題是這一行:

UIViewController *root = (UIViewController *)[self.navigationController.viewControllers objectAtIndex:0]; 

要引用實際的類根控制器。喜歡的東西:

MyRootViewController *root = (MyRootViewController *)[self.navigationController.viewControllers objectAtIndex:0]; 

更換MyRootViewController與類爲您的根控制器的實際名稱 - 具有txtID屬性之一。

0

您應該使用的,而不是「UIViewController的」自定義類...然後.h文件鏈接上@property有..應該這樣做......

0

如果您有隻有一個文本框你的根視圖控制器,你可以的foreach所有子視圖在你的根視圖,並檢查了是它的UITextField類型:

UIViewController *root = (UIViewController *)[self.navigationController.viewControllers objectAtIndex:0]; 
    for (UIView *v in [root.view subviews]) 
    { 
     if ([v isKindOfClass:[UITextField class]]) 
     { 
      UITextField *textField = (UITextField*)v; 
      [textField setText:@"My text to set up"]; 
     } 
    } 

但是,如果你有你的根視圖控制器的更多的TextField你應該通過標籤識別它,也比較它在更新文本之前。

相關問題