Shakeel Choudhury
Shakeel Choudhury

Reputation: 21

Using a Table View in a View Controller and wiring it up

I'm fairly new to xcode and Objective-C. Here is my problem:

When trying to set this up and building it, it gives me an error saying I need to wire up my table view to the view controller somehow.

I know it is something to do with the data source and the table view delegate but I don't know how to wire the table view to the data source and delegate of my view controller.

Could anyone tell me how, or link me to an easy to follow guide on this?

Thanks

Upvotes: 0

Views: 742

Answers (1)

Dennis Weidmann
Dennis Weidmann

Reputation: 1967

The easiest way would be to create a new Swift, or Objective-C Class and extend UITableViewController with it. This will create you a perfect sample code on how to write a UITableView DataSource and Delegate, which could be just copied.

After that, set your UITableViews delegate and datasource properties to self in viewdidload and implement UITableViewDataSource, UITableViewDelegate.

Edit

import UIKit

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

    @IBOutlet weak var myTable: UITableView!
    var myDataArray: NSArray!

    override func viewDidLoad() {
        super.viewDidLoad()
        myDataArray = NSArray(objects: "Peter", "Paul", "Marry")
        myTable.dataSource = self
        myTable.delegate = self
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    //MARK: TableView DataSource
    func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1
    }

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return myDataArray.count
    }

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        var cell: UITableViewCell? = tableView.dequeueReusableCellWithIdentifier("Cell") as? UITableViewCell

        if (cell == nil) {
            cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "Cell")
        }

        cell?.textLabel.text = myDataArray.objectAtIndex(indexPath.row) as NSString

        return cell!
    }

    //MARK: TableView Delegate
    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        tableView.deselectRowAtIndexPath(indexPath, animated: true)
    }
}

I quickly wired you up some Swift Example code, where you can see how to connect a table view, with the DataSource and Delegate of your Class.

Upvotes: 1

Related Questions