如何将值从一个控制器传递到另一个控制器?我使用的是StoryBoard。
我希望这会出现在第一个视图的突出显示的文本视图中。
调用代码的下一个视图,我认为这样的事情应该是这样的:
UIStoryboard *finish = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *viewController = [finish instantiateViewControllerWithIdentifier:@"FinishController"];
viewController.modalPresentationStyle = UIModalPresentationPageSheet;
[self presentModalViewController:viewController animated:YES];
finishcontroller:
- (void)viewDidLoad
{
self.lblFinishTitle.text=self.FinishTitle;
self.lblFinishDesc.text = self.FinishDesc;
self.lblFinishPoint.text=self.FinishPoint;
[super viewDidLoad];
// Do any additional setup after loading the view.
}
第一眼观点:
-(void) prepareForSegue:(UIStoryboardPopoverSegue *)segue sender:(id)sender
{
if ([segue.identifier hasPrefix:@"FinishController"]) {
FinishController *asker = (FinishController *) segue.destinationViewController;
asker.FinishDesc = @"What do you want your label to say?";
asker.FinishTitle = @"Label text";
asker.FinishPoint = @"asdas";
}
}
我想传递一个导致代码传输的值
答案 0 :(得分:4)
问题是您实际上并未使用该segue,而是使用presentModalController
。
请注意,通常情况下,您只需询问self
它的故事板。但是,当连接segues时,即使这样也是不必要的:
[self preformSegueWithIdentifier:@"FinishController" sender:self];
然后将调用prepareForSegue 。另请注意,您可以(应该)使用比segue标识符更具权威性的内容来确定是否应该加载数据...您可以询问segue的目标控制器是否是正确的类:
-(void) prepareForSegue:(UIStoryboardPopoverSegue *)segue sender:(id)sender
{
if ([segue.destinationViewController isKindOfClass:[FinishController class]]) {
FinishController *asker = (FinishController *) segue.destinationViewController;
asker.FinishDesc = @"What do you want your label to say?";
asker.FinishTitle = @"Label text";
asker.FinishPoint = @"asdas";
}
}
您可能已经知道(因为您在代码中使用了标识符),但是为了这篇文章的未来发现者的利益;当您在故事板中时,segues在Xcode的检查器面板中被赋予标识符。