3

如何将值从一个控制器传递到另一个???我使用故事板。

故事板

我希望它出现在第一个视图的突出显示的文本视图上。

调用代码的下一个视图,我认为应该是这样的:

UIStoryboard *finish = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];

    UIViewController *viewController = [finish instantiateViewControllerWithIdentifier:@"FinishController"];

     viewController.modalPresentationStyle = UIModalPresentationPageSheet;
     [self presentModalViewController:viewController animated:YES];

完成控制器:

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

我想传递一个导致代码传输的值

4

1 回答 1

4

问题是您实际上并没有使用那个segue,而是在使用presentModalController

请注意,通常,您可以只要求self它的故事板。但是,当您连接了 segue 时,即使这样也是不必要的:

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

您可能已经知道(因为您在代码中使用了标识符),但为了这篇文章的未来发现者的利益;当您在故事板中时,在 Xcode 的检查器面板中为 segues 提供了标识符。

于 2012-07-13T04:45:39.810 回答