user3662992
user3662992

Reputation: 688

Swift: Three prototype cells in TableviewController won't view

I want to create three cells in a tableview controller and I added three prototype cells in storyboard it doesn't crash but it view an empty tableview.

 super.viewDidLoad()

    // Uncomment the following line to preserve selection between presentations
    // self.clearsSelectionOnViewWillAppear = false

    // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
    // self.navigationItem.rightBarButtonItem = self.editButtonItem()
    let nib1 = UINib(nibName: "one", bundle: nil)
    tableView.registerNib(nib1, forCellReuseIdentifier: "one")
    let nib2 = UINib(nibName: "two", bundle: nil)
    tableView.registerNib(nib2, forCellReuseIdentifier: "two")
    let nib3 = UINib(nibName: "three", bundle: nil)

    tableView.registerNib(nib3, forCellReuseIdentifier: "three")
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

// MARK: - Table view data source

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    // #warning Incomplete implementation, return the number of sections
    return 3
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    // #warning Incomplete implementation, return the number of rows
    return 1
}


override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

// let cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath) var cell:UITableViewCell!

    switch (indexPath.row){
    case 0 :
        cell = tableView.dequeueReusableCellWithIdentifier("one") as! one
        cell.textLabel?.text = "book1"
        break;
    case 1:
        cell = tableView.dequeueReusableCellWithIdentifier("two") as! two
          cell.textLabel?.text = "book2"
        break;
    case 2 :
        cell = tableView.dequeueReusableCellWithIdentifier("three") as! three
          cell.textLabel?.text = "book3"

    default:
        break;

    }

    // Configure the cell...

    return cell
}

Upvotes: 4

Views: 728

Answers (1)

ndmeiri
ndmeiri

Reputation: 5029

Since you'll always want exactly 3 cells to show in your table view, you should use the "Static Cells" style of UITableView. You can set this in the Storyboard if you select the appropriate UITableView and look in the Attributes Inspector.

Then, drag out the correct number of cells and configure them in the Storyboard. Connect each cell to an IBOutlet if you need to manipulate them or their contents programmatically.

Note that, since static table views are only allowed in a UITableViewController, you may need to change the class that contains the code you included in your question.

Upvotes: 2

Related Questions