2017-02-28 140 views
1

我有一個視圖控制器(vc1),它有一個容器視圖,下面有一個保存按鈕。容器視圖嵌入到具有靜態單元格的tableview控制器(tvc1)中。每個單元格都有標籤和文本框。 我想在vc1中獲取tvc1中textfields的內容。 我嘗試了兩種方法:無法訪問容器視圖的tableview控制器元素

Preparefor賽格瑞在VC1:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    NSLog(@"prepare for segue called in settings view controller."); 
    NSString * segueName = segue.identifier; 
    if ([segueName isEqualToString: @"embedseguesettings"]) { 
     NSLog(@"embed segue called "); 
     settingsTableViewController *tvc1 = (settingsTableViewController *)segue.destinationViewController; 
     tvc1.surlTextField.text = @"i got u ";   
    } 
} 

我收到了「稱爲嵌入SEGUE」打印,但在tvc1文本字段不會更新與我的文字「我得到了U」。我有正確的tvc1對象嗎?在VC1

實例化tvc1:

- (IBAction)save:(id)sender { 
    settingsTableViewController *tvc1 = [self.storyboard instantiateViewControllerWithIdentifier:@"settingsTableView"]; 
    NSLog(@"surl textfeild = %@",tvc1.surlTextField.text); 
} 

但我總是得到null作爲輸出。我鍵入一些文本來surl textfield一個新聞保存。我總是得到空。

settingsTableViewController是容器視圖的表視圖控制器,並且我只設置該類的行數和no行數。我是否需要出院細胞,我不應該? ,它是一個靜態tableview。

回答

1

問題是,您正在加載視圖之前在tvc1中設置textField值。

您應該添加在tvc1屬性...

@property (nonatomic, strong) NSString* someText; 

然後在prepareForSegue方法,分配給someText保持對它的引用tvc1

if ([segueName isEqualToString: @"embedseguesettings"]) { 
    settingsTableViewController *tvc1 = (settingsTableViewController *)segue.destinationViewController; 
    tvc1.someText = @"i got u "; 
    self.tvc1 = tvc1  
} 

,並在您tvc1 viewDidLoad

tvc1.surlTextField.text = self.someText 

然後在您保存方法:

- (IBAction)save:(id)sender { 
    // Don't instantiate a new tvc1 
    NSLog(@"surl textfeild = %@",self.tvc1.someText); 
} 
+0

完美。非常感謝。 – CodeTry

+0

但對於第二種方法,當我試圖通過故事板實例化tvc1時,此時tvc1已經顯示並且已被加載。爲什麼它不顯示文本字段? – CodeTry

+0

當您實例化視圖控制器時,它會創建該類的新實例 - 不是您更新的實例 –

1

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender流向它仍然沒有分配其網點所以...

UIViewController沒有在那一刻加載。 您需要設置@property值並訪問viewDidLoad()方法 中的值,並相應地設置您的textFiled文本。

相關問題