I created a new View Controller, I then opened up and created a new filed (Objective-C class) and then created a subclass of UIVewcontroller. I added my table views and labels in story board and now suddenly it wont connect them to the .h subclass Ive created. Any suggestions?
You have to name that the view controller is part of your class. Select your view controller and on the third tab on the right write the name of your view controller. Here is a picture I got from this tutorial to help:
Related
I followed the "Storyboard tutorial" and made some Table View Controllers; now I want to change one of them to a regular View Controller.
Is there a way to do that without making a new one?
One option is to edit the storyboard file directly. Navigate to the Storyboard in Finder and open with any text editor. Find the view controller in question and change the node in the xml from tableViewController to viewController.
This saves the pain of having to recreate the view controller, which comes in handy when you have a lot of connections made. This also works the other way around. If you have a viewController that started out as a plain view controller but you want to turn it into a table view controller you can simply edit the file reversing the node.
You need to create a new view controller and drag a tableview into it. Remember to set the delegate and datasource of the tableview to the view controller.
I have had the same scenario where I needed to change the Tableviewcontroller to a view controller. I googled for a work around but ended up without an exact solution. What I did was added a subclass of view controller and dropped a UITableview and added some more controls that I wanted. Pretty inconvenient but worked the way eventually!
In my storyboard I drag on a new View Controller. My Storyboard now has two view controllers: the main one that came when I created the file, and the one a dragged on.
When I go into the 'assistant editor' and select the main view controller, I get the ViewController.h class. But when I select the other controller I get UIViewController.h which is an Apple file.
How do I link/create these classes for each View Controller? Is there an automated way to do this, or am I not doing it right.
You need to create your own subclass of UIViewController and set the newly created view controller as the custom class in the storyboard.
Press cmd+n or go to File > New File
Select Objective-C class and hit next
Type UIViewController into the second box and type a name for the new class in the first box (which will be something like MyClassViewController)
Go into your storyboard, select the View Controller you dragged out, look at the inspector and go to the Custom Class Tab and set the custom class to your newly created view controller (e.g. MyClassViewController)
This is a novice error for sure. In Xcode 4 i have created a Window Based application in which i put a TabBarController as the root controller. When the application starts, the first tab of the tabbar is selected and thus the view corresponding to that tab is shown. The problem is that the View Controller that corresponds to that view in the first tab is not being read, i put some logs in the init, viewWillLoad, and viewDidLoad methods and none of them are being shown. I have linked the controllers correctly, plus Xcode links them automatic if you select that option when creating a new view controller. Here's how it looks like in my project.
This is how it looks like in the tab controller i have linked to the view.nib:
And this is the view, it is linked to the view controller:
And here's the View Connected to the File's Owner Outlet:
Everything looks fine for me so i don't understand why it's not calling those methods in the view controller when the application starts or when the tab corresponding to that view is being selected.
Thanks in advance for the help.
I fixed it. The problem was that the referencing class was UIViewController intead of the view controller i created for it. The answer was to go to MainWindow.xib then select View Controller - Home then go to Identity Inspector and select the View Controller i created for it in this case the HomeViewController.h
I have a tab bar with 4 items and i want to link the .xib files to each item. The problem is that the NIB File Name shows no items, and if i write the .xib for example, StartView without the .xib i get an error. I get the same error when i link the tab item to the view controller class in the Identity Inspector. This is the error:
'NSInternalInconsistencyException', reason: '-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "StartView" nib but the view outlet was not set.'
I had no problem with this in Xcode 3. As far as i know i don't need outlets in my view controller to be able to link a view to a bar item.
Any ideas on how to fix this?
Thanks.
Each .xib has a main view that must be connected to its files owner. Usually when you change the class name of a .xibs owner, the view outlet will become disconnected. So you'll want to first check that the class name of your .xib is the custom controller you have made. You then have to open the .xib and click on the connections inspector. Then just drag and connect the view outlet (labelled as view in the connections inspector) to your view.
Cheers.
Problem solved, but i didn't like the solution. I created the view controller again and selected to create a .xib file along with the controller and that was it. Then i made the usual references from interface builder and it's working. I didn't like it because the .xib file has the same name as the view controller class. If anyone knows how to create the .xib file and the view controllers separately and get it to work, please inform me, i would really appreciate it.
select create new file, objective c, check the make xib file box and in the name of it, add .xib extension to the end of the name
Hi I am trying to change the default view MainWindow.xib loads. I am using view based app. I changed the app delegate file, added my new view as a subview to the main window. but in interface builder it still says mainwindow.xib loads from the default view not my newly added view. (BTW I added a new xib file for my new view and that is the one I want to load at startup.)
thanks.
If you want to change from using MyAppViewController.xib to `MyOtherView.xib', you also need to change the class of the view controller in Interface Builder. You can do this by selecting the view controller, going to the Identity tab (the last one) and putting the class name of your new view controller in the "Class" field.
Change the 'Main nib file base name' in the Info.plist of your App too if you have another Main.XIB.