简体   繁体   中英

Reuse childs from custom UIVIewController using storyboard

I have a storyboard with a navigation controller that leads to an UIVIewController that I want to reuse. That UIVIewController has a ParentUIViewController that has all the basic functionalities for all the UIVIewControllers that I am reusing.

Currently I am copying and pasting (meh) and then I change the class of the UIViewController to the ChildUIVIewController that I want to use (ChildUIViewController extends ParentUIViewController).

But this sounds like a bad solution. Everytime I want to change the ParentViewController visually I need to update, manually, all other ChildViewControllers.

I have tried to create a xib for the ParentViewController but the xib isn't loaded because I need a xib with the name of the ChildViewController . I have created it and then said the class is the ParentViewController but it crashes in the segue.

EDIT

I have created an example of the status of my problem

https://github.com/tiagoalmeida/storyboardexample

Note that the ParentViewController has a set of logic way more complicated that is not illustrated there. Also note that I am also using a TableView. I hope that this can illustrate the problem.

Keep the logic on the parentViewController and the UI Part on the child UIViewControllers . If you need to create a new UIViewController , you will create a child that will have a corresponding XIB (or get rid of XIBs and create the interface by hand).

Have you considered looping back into the same UIViewController via a "phantom button"?

Have a look at this: UIStoryboard Power Drill, Batteries included

Essentially you can drag a Bar Button Item into the little black bar under the View Controller in Storyboard (the 1 with View Controller, First Responder, and Exit icons; sorry, I don't recall what this is called exactly), then you can control+drag from that button back into the UIViewController for a Push segue. This should create a loop segue in your Storyboard. All you need to do next is give that segue an identifier, programmatically call it from your code using [self performSegueWithIdentifier:] , then implement -(void)prepareForSegue: and use [segue destinationViewController] to conditionally set the title and perhaps some flags so you can identify when to use different kinds of fetches (or other code variations) in the same Class code.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM