2016-05-18 4 views
0

У меня есть один ViewController в Xcode, в котором я добавил две кнопки, один вид и один TableView (а не контроллер табличного представления).Заполнение таблицыView в Xcode с Swift

Я хочу иметь строки vier в таблице, в которой я могу добавить дату, которая иногда меняется.

Теперь у меня есть одна проблема: У меня есть класс, в котором я буду контролировать этот материал:

import UIKit 

class DeviceTableViewController: UITableViewController { 

    override func viewDidLoad() { 
     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() 
    } 

    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 1 
    } 

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

    /* 
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath) 

     // Configure the cell... 

     return cell 
    } 
    */ 

    /* 
    // Override to support conditional editing of the table view. 
    override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool { 
     // Return false if you do not want the specified item to be editable. 
     return true 
    } 
    */ 

    /* 
    // Override to support editing the table view. 
    override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { 
     if editingStyle == .Delete { 
      // Delete the row from the data source 
      tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) 
     } else if editingStyle == .Insert { 
      // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view 
     }  
    } 
    */ 

    /* 
    // Override to support rearranging the table view. 
    override func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) { 

    } 
    */ 

    /* 
    // Override to support conditional rearranging of the table view. 
    override func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool { 
     // Return false if you do not want the item to be re-orderable. 
     return true 
    } 
    */ 

    /* 
    // MARK: - Navigation 

    // In a storyboard-based application, you will often want to do a little preparation before navigation 
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     // Get the new view controller using segue.destinationViewController. 
     // Pass the selected object to the new view controller. 
    } 
    */ 

} 

Теперь я хочу, чтобы подключить, что с точки зрения. Вот почему я хочу изменить класс tableView в инспекторе атрибутов на DeviceTableViewController (имя моего класса). Но Xcode этого не сделает.

Как я могу это изменить?

+0

Вы упомянули в своем вопросе, как **, один вид и один TableView (не контроллер представления таблицы). ** но класс 'UITableViewController' –

+0

Это диспетчер представлений, в котором я добавил один вид и один TableView. в Xcode, tableview не совпадает с tableviewcontroller. – FranzFerdinand

ответ

2

UITableViewController способен обрабатывать стандартный настольный контроллер, поставляемый Apple. Чтобы создать контроллер со смешанными представлениями, как вы хотите, вам нужно подклассифицировать стандарт UIViewController вместо UITableViewController (который вы в настоящее время сделали).

Я попытался воссоздать аналогичный сценарий, подобный вашему: контроллер, который имеет UIView, два UIButtons и UITableView. Обратите внимание, что в раскадровке были установлены datasource и delegate вида таблицы, но вы можете сделать то же самое в коде.

// 
// ViewController.swift 
// TableWithStuff 
// 
// Created by Stefan Veis Pennerup on 18/05/16. 
// Copyright © 2016 Kumuluzz. All rights reserved. 
// 

import UIKit 

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { 

    // MARK: - Models 

    let model = ["Coffee", "With", "Milk", "Please"] 

    // MARK: - Storyboard outlets 

    @IBOutlet weak var firstButton: UIButton! 
    @IBOutlet weak var secondButton: UIButton! 
    @IBOutlet weak var myView: UIView! 
    @IBOutlet weak var myTableView: UITableView! 

    // MARK: - Storyboard actions 

    @IBAction func firstButtonTapped(sender: UIButton) { 
     myView.backgroundColor = UIColor.redColor() 
    } 

    @IBAction func secondButtonTapped(sender: AnyObject) { 
     myView.backgroundColor = UIColor.greenColor() 
    } 

    // MARK: - UITableViewDataSource 

    func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
     return 1 
    } 

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

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCellWithIdentifier("myAwesomeCell")! 
     cell.textLabel!.text = model[indexPath.row] 
     return cell 
    } 

} 

Storyboard of the controller

Datasource and delegate set in the storyboard

The final result

+0

Это работает! Большое спасибо. – FranzFerdinand

Смежные вопросы