2017-02-28 7 views
1

コンテナビューがあり、その下に保存ボタンがあるビューコントローラ(vc1)があります。コンテナビューは、静的セルを持つテーブルビューコントローラ(tvc1)に埋め込まれます。各セルにはラベルとテキストフィールドがあります。 私はvc1のtvc1のテキストフィールドの内容を取得しようとしています。 VC1でコンテナビューのtableviewコントローラ要素にアクセスできない

Prepareforセグエ: は、私は2つの方法を試してみました、私は「と呼ばれる埋め込みセグエ」のプリントを取得しています

- (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 ";   
    } 
} 

を、しかしtvc1でテキストフィールドは、「私はUを得た」私のテキストで更新されていません。私はtvc1オブジェクトを正しく持っていますか?

VC1でのインスタンス化のtvc1:

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

しかし、私は常に出力としてnullを取得します。私はいくつかのテキストを打ち込んで、テキストフィールドを押して保存します。私はいつもヌルになる。

settingsTableViewControllerはコンテナビューのテーブルビューコントローラであり、セクションの数とそのクラスの行は設定していません。セルをデキューする必要がありますか?その静的なテーブルビューです。

答えて

1

問題は、ビューがロードされる前にtvc1のtextField値を設定していることです。

あなたはtvc1にプロパティを追加する必要があります...

@property (nonatomic, strong) NSString* someText; 

その後、あなたのprepareForSegue方法では、someTextに割り当てるとも

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

とあなたのtvc1でviewDidLoad

をtvc1への参照を保持
tvc1.surlTextField.text = self.someText 

は、その後、あなたの保存方法に:- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 1として

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

が完璧です。どうもありがとう。 – CodeTry

+0

しかし、2番目の方法では、私はストーリーボードを通してtvc1をインスタンス化しようとしていますが、この時点ではtvc1は既に表示されており、ロードされています。テキストフィールドが表示されないのはなぜですか? – CodeTry

+0

View Controllerをインスタンス化すると、そのクラスの新しいインスタンスが作成されます。 –

1

はまだそれを割り当てられていないコンセントを流しそう...

UIViewControllerは、その時点でロードされません。 @propertyの値を設定し、viewDidLoad()の方法 にアクセスし、それに応じてtextFiledテキストを設定する必要があります。

関連する問題