How I can add different view which situated in storyboard to scrollview??Is it possible?If yes,please write code in swift.
Related
I am working on an application using swift and storyboard layout. Can you please suggest me the way how can I point two different tabs of UITabbarController to same UIViewControllers embedded in UINavigationController.
Xcode UITabBarController: Make Two tabs point to same ViewController does not work because I have many tabs in my UITabbarController and I want to do by using storyboards.
thanks.
I have been watching a lot of tutorials on Table Views, table view cells etc. When creating a table view why choose a UIViewController over a UITableViewController in Xcode? For instance what would be the main benefits of creating a UIViewController and then adding a tableView object, over just creating a UITableViewController? I have already created a large numbers of scenes within storyboard and I hope I haven't limited myself in doing so. I hope my question is clear as I am new to coding!
UIViewController gives you more control over tableview rather than UITableViewController. You should use UITableViewController only when you are just concerned with tableview in a controller. But if you want to add more subviews/controls in a controller other than tableview, then you have to use UIViewController.
EXAMPLE:
If you just want to display grocery items list with some header and footer, then tableviewcontroller should be priority. But if you want to display mail items in tableview, you would need some additional buttons for altering items in mail(tableview). For later case, you will use viewcontroller. Hope my point is clear.
I think the benefits of having a View Controller is just more versatility and you will have a easier time to add other views other than the UItableview. Whereas UITableViewController i just inheriting a UIViewController, but with the delegates already set up for you. Basically it is assuming you will have a UITableView for sure. In the end it shouldn't really limit you, just cause you used UITableViewController, since everything you want to do in UIViewController, you can do in UIViewController.
To create from code a parent/child relationship between 2 view controllers basically it's just matter of doing something like:
[self addChildViewController:childViewController];
[self.view addSubview:childViewController.view];
where self is the parent view controller.
But, what if I want to create the same relationship completely from Interface Builder?
Or in other words: is there a way to re-create the behavior of the method addChildViewController using Interface Builder?
I didn't find a lot of documentation about that, here is an old unresolved post about the topic: https://devforums.apple.com/message/455758#455758
Without properly setting up the addChildViewController relationship, none of the rotation methods are forwarded to my child view controller, here where my question come from.
This is what I've done in IB:
drag and dropped a "View Controller" object from the "Object Library" panel into the "Objects" panel
in the identity inspector I've changed its class to my UIViewController subclass ("Items View Controller")
connected the view outlet to the controller
connected all the other required outlets to the controller (List name, Table View)
The first "View" object in the picture is the view of my parent view controller, instead the highlighted "View" is the view of the child view controller ("Item View Controller").
The container controller also retain its child instance through an additional IBOutlet:
#property (nonatomic, strong) IBOutlet ItemsViewController *itemsViewController;
Thanks
Update 1: If I manually set the parent/child relationship in viewDidLoad of the container controller, all the rotation methods are correctly forwarded to the child.
[self addChildViewController:self.itemsViewController];
But I don't really know if this is the correct way of doing that, since I would like to do all using IB.
Update 2: Thanks to #micantox for his hint to use the "Container View" in the Object Library, I have converted my xib file to a Storyboard and now the child view controller is added to its parent, so I don't have to add it manually from code with addChildViewController and the rotation methods are forwarded as expected.
"Container View" basically implements the embed segue and is supported only from iOS 6.
This is an updated screenshot from my Storyboard:
The right way of creating container views for child view controllers is through the use of the object "Container View" in the Object Library. Dragging one in your View Controller's scene will create a new scene for the child view controller that can be managed separately from the the parent view controller.
Also, if you're trying to create an embed segue to an existing view controller in your storyboard, control-drag from the container view, not the container VC, to the VC you want to embed.
A very simple way to do it is just instantiate the child view controller by referencing its storyboard ID:
UITableViewController *childViewController = [self.storyboard instantiateViewControllerWithIdentifier:#"childViewController"];
[self addChildViewController:childViewController];
[self.view addSubview:childViewController.view];
That way, you can build both view controllers in interface builder. You can set the storyboard ID in interface builder: select the view controller and you'll see a field for it in the identity inspector.
I have a problem trying to relocate a UILabel when loading a View. I can move the label if I run this code
lTarget.frame = CGRectOffset(lTarget.frame, 0.0f, -75.0f);
from for example a button action, it works properly. But where should I put this code if I want it to be called on the view load?, I tried viewDidLoad and viewWillAppear but this doesn't work.
I need to relocate this label because I want a different layout for the 3.5 inch screen.
Any idea?
If you are using a xib or storyboard with Autolayout enabled, it will cause your view size and position to be recalculated between the calls to viewWillAppear: and viewDidAppear:.
You should be able to move your code to viewDidAppear: or turn off Autolayout.
I've just created a storyboard with few table controllers and one view controller.
Everything works fine until my app push the view controller: it's shown completely black.
I can add map view, image view or whatever, or even nothing (a complete empty view controller), but it's always shown black.
I push it using the the navigation [self.navigationController pushViewController] code line.
This is not happening with table controllers, just with view controllers.
Any suggestion?
I'm using Xcode 4.3.2 4E2002.
Thanks in advance,
Samuel
Have you defined your storyboard correctly? This behavior could happen if you failed to properly initialize your storyboard and instantiate your controller from the storyboard. IE, you need to create a UIStoryboard object and need to instantiate your controller by calling
[storyboardObject instantiateViewControllerWithIdentifier: #"controllerName"]; ...See the thread here: http://mobile.tutsplus.com/tutorials/iphone/ios-5-sdk-storyboards