putting ivars into init

后端 未结 1 935
旧时难觅i
旧时难觅i 2020-12-12 06:58

I have two view controllers: BSViewController which contains the source ivars number and array, and BSotherViewController

相关标签:
1条回答
  • 2020-12-12 07:49

    You're using a storyboard segue. The segue will create the destination view controller by loading it from the storyboard. There's no point in creating a -[BSotherViewController initWithNumber:array:] method, because the segue won't use it.

    When the user triggers the segue by tapping the button, the system creates an instance of UIStoryboardSegue. This segue object has a destinationViewController property which will (in your case) be the BSotherViewController instance that is about to appear. The system sends a prepareForSegue:sender: message to the source view controller (your BSViewController), and passes the segue object as the first argument.

    You need to implement prepareForSegue:sender: in BSViewController. In that method, you have access to both the source view controller (self) and the destination view controller (segue.destinationViewController), so you can pass data from one to the other.

    First, add number and array properties to BSotherViewController. Then, add a method like this to BSViewController:

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
        // The identifier here must match the one you assigned to the segue in the storyboard.
        if ([segue.identifier isEqualToString:@"GoingToOtherViewController"]) {
            BSotherViewController *destination = segue.destinationViewController;
            destination.number = self.number;
            destination.array = self.array;
        }
    }
    

    Finally, in -[BSotherViewController viewDidLoad], use the values of your new number and array properties to set the content of your views.

    0 讨论(0)
提交回复
热议问题