2017-07-12 5 views
0

ラベル、TableView、別のラベル、およびボタン(降順)を保持する垂直スタックビューを含むビューを作成する必要があります。私はセルを埋めることができないので(私はスーパービューでは空白スペースとして表示されます)、TableViewを設定しようとすると苦労しています。今、私はメインビューのためのViewControllerを持っています - 'YourOrderViewController' - そしてTableViewControllerのTableView - 'OrderItemsTableViewController'。それは次のようになります。UIViewControllerのサブビューであるUITableViewをどのように埋めるのですか?

メインビュー

class YourOrderViewController: UIViewController{ 

var cellTitle = String() 
var cellSubtitle = String() 

@IBOutlet weak var orderListTable: UITableView! 

let orderTableController = OrderItemsTableViewController() 

override func viewDidLoad() { 
    super.viewDidLoad() 

    orderListTable.delegate = orderTableController 
    orderListTable.dataSource = orderTableController 
} 

そして、テーブルビューのサブビュー

class OrderItemsTableViewController: UITableViewController { 
var drinkOrderList = [Drink]() 
var foodOrderList = [Food]() 

override func numberOfSections(in 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 
    if section == 0 { 
     return drinkOrderList.count + foodOrderList.count + 1 
    } else { 
     return 0 
    } 
} 


override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    var cell = tableView.dequeueReusableCell(withIdentifier: "OrderItemCell", for: indexPath) 

    if indexPath.row < drinkOrderList.count { 
     cell.textLabel?.text = drinkOrderList[indexPath.row].drinkName 
    } else if indexPath.row - drinkOrderList.count < foodOrderList.count { 
     cell.textLabel?.text = foodOrderList[indexPath.row].foodName 
    } else { 
     print("Also here") 
     cell = tableView.dequeueReusableCell(withIdentifier: "AddToOrderCell", for: indexPath) 
} 

return cell 

} 

私は、最初は1つのビューコントローラ、デリゲートとデータだったのUIViewControllerで全体を作ってみましたUITableViewのソース、しかしそれはどちらも動作しませんでした。どんな助けもありがとうございます。

+0

申し訳ありませんご注文のビュー階層にOrderItemsTableViewController.viewを追加する場所がわかりません –

答えて

0

プレーン&シンプルにやっています。例えば

OrderItemsTableViewController

orderListTable.delegate = orderTableController 
orderListTable.dataSource = orderTableController 

orderTableControllerインスタンスはcontrollerタイプ、代わりはずのtableViewデリゲート&データソースに準拠クラスのNSObjectのタイプ。あなたはまた、

let _delegate = TableViewDelegate() 
let _dataSource = TableViewDataSource() 
_dataSource.someDataProperty = data //<-- important 
orderListTable.delegate = _delegate 
orderListTable.dataSource = _dataSource 

行うことができます今

class TableViewDataSource: NSObject, UITableViewDataSouce { 
    // no need of controller's life cycle 
    // just declare all & implement all protocol required 
} 
class TableViewDelegate: NSObject, UITableViewDelegate { 
    // have some property where you could set the data after you initialize this object 
} 

、あなたのコントローラでは、あなたは、あなたのcellForRowAtreload this tableView

にメソッドを追加し、あなたがそれを得たまでちょうど今のところ1つのカスタムセルを使用する必要があります

+0

ありがとうございます!私は実際にViewController自体をデリゲートとデータソースにすることができましたが、これで私はそこに到達することができました。 –

関連する問題