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

問題は、実際にそのセグエを使用しているのではなく、presentModalController代わりに使用しているということです。

通常は、ストーリーボードを要求するだけでよいことに注意してくださいself。ただし、セグエを接続している場合は、それでも不要です。

[self preformSegueWithIdentifier:@"FinishController" sender:self];

次に、prepareForSegue呼び出されます。また、データをロードする必要があるかどうかを判断するために、セグエ識別子よりも信頼できるものを使用できる(すべきである)ことに注意してください...セグエの宛先コントローラーに、それが正しいクラスであるかどうかを尋ねることができます。

-(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のインスペクターパネルでセグエに識別子が与えられます。

于 2012-07-13T04:45:39.810 に答える