2017-02-13 5 views
1

間で値を渡します(私たちはTVCとEVCそれらを呼び出すだろう、簡単のため)TimerViewControllerEfficiencyViewControllerを私は特定の値(2つのNSStringオブジェクトを渡すようにしようとしていますの初期化と私は2つのUIViewControllers持っViewControllers

、 1 NSTimeInterval)をTVCからEVCに送信します。 EVCを初期化して、ボタンを押すとポップアップする必要があります。 全体として、私は2つの方法を試みました。私はEVCをインスタンス化するとき、私はTVCに保持された値はリセットされるので、基本的にはデータが渡されない:直接(TVC)において値

 UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
EfficiencyViewController *efficiencyViewController = [storyboard instantiateViewControllerWithIdentifier:@"EfficiencyView"]; 
efficiencyViewController.category = _categoryLabel.text; 
efficiencyViewController.desc = _descriptionTextField.text; 
efficiencyViewController.duration = [_timer getInterval]; 
efficiencyViewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
[self presentViewController:efficiencyViewController animated:YES completion:NULL]; 

問題を通過

1。カスタムのinitメソッド

TVC

EfficiencyViewController *efficiencyViewController = [[EfficiencyViewController alloc] initWithName:_categoryLabel.text desc:_descriptionTextField.text duration:[_timer getInterval]]; 
[self presentViewController:efficiencyViewController animated:YES completion:NULL]; 

EVC initWithNameメソッドの実装

- (id)initWithName:(NSString *)category desc:(NSString *)theDesc duration:(NSTimeInterval)theDuration { 
// self = [super initWithNibName:@"EfficiencyViewController" bundle:nil]; 
if (self != nil) { 
    _category = category; 
    _desc = theDesc; 
    _duration = theDuration; 
} 
return self; 
} 

を構築

2.(私はEVCが実際に画面上にポップアップするので、これはあると思います) 問題:値は単に渡されていません。また、このようにして、EVCにはボタンやテキストラベルなどの主要コンポーネントが欠落しています。

+0

[View Controller間でデータを受け渡しする](http://stackoverflow.com/q/5210535/643383)は正確に重複しているとは思えませんが、役立つはずです。あなたの問題の半分は、あなた自身のビューコントローラをインスタンス化することから生じているようです。もちろんそれを行うことは可能ですが、あなたは上流に泳いでいます。 @ NRitHがセグを使用することが推奨されるルートです。 – Caleb

答えて

1

を見ますSegueオブジェクトからEVCのビューコントローラ(EVC)を選択すると、EVCのプロパティが設定されます。

0
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" 
bundle:nil]; EfficiencyViewController *efficiencyViewController = 
[storyboard 
instantiateViewControllerWithIdentifier:@"EfficiencyView"]; 
efficiencyViewController.category = _categoryLabel.text; 
efficiencyViewController.desc = _descriptionTextField.text; 
efficiencyViewController.duration = [_timer getInterval]; 
efficiencyViewController.modalTransitionStyle = 
UIModalTransitionStyleCoverVertical; 

使用自己代わりの_、あなたはストーリーボードでこれらを持っている場合は、ストーリーボードセグエを使用して、およびTVCのprepareForSegue()にする必要があり、あなたが先に取得し、このリンクにhttps://stackoverflow.com/a/30901681/4912468

+0

ええ、そうだね。私が_を使用した理由は、読みやすさのためです。自己を使用しないだろう。あなたのコードの読みやすさを妨げる?あなたの意見は何ですか? – besnuj

関連する問題