ios create and then dynamically add UI elements

2019-07-20 09:07发布

问题:

I don't know if this is possible but it sounds like something that should be.

What i want to do is, to create UIViews (or UIViewControllers not really sure how it would work) in Interface Builder say... 10 of them, and use them according to what the user choose to.

For example in state A i wanna show him widgets 1,2 and 3; in state B widgets 3,5 and 7 etc.

EDIT: what i mean by state, is that according to what the user chose in the previous steps, they all lead to the same UIViewController but it should present itself differently according to the aforementioned "state". And now I can't create a different UIViewController for every different combination :)

And also being able to position them in the parent view is a must.

Any suggestions?

回答1:

OK, so in answer to your comment, you can indeed do just what you want. Create a separate nib file for your custom view, say MyView.xib, and make the File's Owner's class to be whatever your view controller class is.

Then in your view controller, create an IBOutlet property for the custom view:

@property (nonatomic, assign) IBOutlet MyView * myView;

In the nib file, hook up the myView outlet of the view controller, to the top level view.

Then to load the view in code, all you need to do is:

[[NSBundle mainBundle] )loadNibNamed: @"MyView" owner: self options: nil];

and the nib will be loaded, and assigned to myView. Then you can add it as a subview.

To make this work with another view controller, just make sure it has the same named outlet, make the loadNibNamed: call, and it will just work.