TonyW
TonyW

Reputation: 18895

Interface Builder : cannot assign custom class to table view controller

I am trying to create a simple app for iOS that uses a tab bar controller to present either a map view or a table view. Both the map view and the table view have the same navigation bar button items:

A Logout button on the left, and Refresh, Add New buttons on the right side of the navigation bar. So I have started experimenting the idea of having a parent controller called LocationViewController, which inherits from the UIViewController.

For the table view, I have a controller called TableViewController: LocationViewController, and another controller called MapViewController: LocationViewController.

On the storyboard, I added a set of two buttons (for refresh and add new) to the top header section of each view (very small, may be hard to see). See the image attached below:

MapView

TableView

There is no problem for me to assign the custom view controller MapViewController to my map view panel, but I cannot find the custom controller class TableViewController in the panel (see the below screenshot)

custom table view controller class not found

I found a similar post on stackoverflow, and a reboot solved that problem, which I also tried, but did not solve my problem at all.

Upvotes: 1

Views: 2537

Answers (2)

bcrich
bcrich

Reputation: 21

You may need to subclass it from UITableViewController. Replace the UIViewController parent class for UITableViewController, like this:

class ViewController: UITableViewController {

Then make sure you selected the View Controller where blue color is all around it and then you can place the name of the class that inherits from UITableViewController.

Upvotes: 2

Losiowaty
Losiowaty

Reputation: 8006

You have added youe buttons in the wrong place. I do not know the right name for the bar, but it contains "associated objects". What you want to achieve should look something like this : enter image description here Unfortunatelly, you cannot add two UIBarButtonItems to one side of navigation bar via interface builder. You can either drag a UIView instead of UIBarButtonItem to that "slot" and add two UIButtons there, or you ca add multiple buttons from code.


Also, it seems that the name of your question is a bit misleading :) After carefull reread of your post I found the "right" question.

Answer - you have added a UITableViewController in your storyboard, but your class doesn't inherit from UITableViewController. If you want to keep the base class, you will have to make it a "plain" UIViewController and add a UITableView to it. Note, that this way you won't be able to have prototype cells.

Upvotes: 4

Related Questions