Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to design separate UIView outside of any ViewController in Storyboard?

I would like to design a UIView, which is larger than a ViewController in Storyboard (iOS 5).

The UIView should be used as the subview of a UIScrollView and hence be larger than any of my existing ViewControllers. How can I create such a UIView in Storyboard and associate it with my UIScrollView?

I would like to do this without xib files if possible.

Thank you!

like image 990
AlexR Avatar asked Mar 10 '12 16:03

AlexR


3 Answers

I see no other option than using xibs, but it's not that annoying:

//We have file called "View.xib" in our project. It contains one SINGLE view
NSArray *xibContents = [[NSBundle mainBundle] loadNibNamed:@"View" owner:self options:nil];
UIView *view = [xibContents lastObject]; //safer than objectAtIndex:0

[self.scrollview addSubview:view];
self.scrollview.contentSize = view.frame.size; 

In order to make IB connections you can set the filesOwner class in the xib to be your viewController, and connect like usual.

like image 191
Johannes Lund Avatar answered Nov 15 '22 08:11

Johannes Lund


You can place a UIView into your scrollview and directly design it inside the viewController of your scrollView

like image 21
Ugur Kumru Avatar answered Nov 15 '22 06:11

Ugur Kumru


I've found the way to edit the view added to the scene (being at the same hierarchy level as ViewController).

Unfortunately it is from hackish types of actions. My Xcode version is Version 4.5.2 (4G2008a). I've tested this in real project and new empty project.

The basic idea is that Xcode do have an ability to edit such external views, unfortunately this mode doesn't activate straightforwardly.

In the method that I've found you need to have 2 levels of hierarchy inside your external view:

Scene
|- VC
   |- View
|- ExternalView
   |- SubView1
      |- SubView2
  • Then goto Document Outline panel
  • find SubView2 in the tree of your scene
  • double click it

The editing area will appear and its coordinates will be saved to project's user data, so you can move it to more suitable place if you want to, and next time you'll open the storyboard in IB on the machine it will be there. Although I think on other machines you'll have to do it again (I haven't tested that).

like image 20
zubko Avatar answered Nov 15 '22 07:11

zubko