之間傳遞的價值觀,我有兩個UIViewControllers:TimerViewController和EfficiencyViewController(爲簡單起見,我們會打電話給他們TVC和EVC)初始化和ViewControllers
我試圖通過某些值(2個NSString對象, 1 NSTimeInterval),當按下按鈕時,從TVC到EVC。 EVC需要初始化並在按下按鈕時彈出。總體而言,我嘗試了兩種方法。
1.直接傳遞值(在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];
問題:當我實例EVC,我在TVC保持的值被複位,所以基本上沒有數據被傳遞。 (我想這是因爲EVC實際上是在屏幕上彈出)
2.構建一個自定義的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;
}
問題:這些值根本沒有被傳遞。而且這樣,EVC缺少一些主要組件,例如按鈕和文本標籤。
我不確定[視圖控制器之間傳遞數據](http://stackoverflow.com/q/5210535/643383)完全重複,但它應該有所幫助。你的問題的一半似乎源於你自己實例化視圖控制器。當然可以,但是你在上游游泳。 @ NRitH建議使用segues是首選路線。 – Caleb