2016-12-02 3 views
0

У меня есть табличный вид с cells, динамически развивающийся с использованием автоматического макета constraints. У меня есть сценарий, в котором я должен показать UITableView внутри одной из этих динамически построенных ячеек. Главное здесь, я не знаю рамки чего-либо, и мне нужно построить все, используя ограничения. Все, что мне нужно, - это объяснение того, как добиться этого?UITableView с динамической высотой с ограничениями автоматической компоновки

+0

Пожалуйста, пройти через это: https: //iosstuff.wordpress.com/2011/06/29/add-a-uitableview-inside-a-uitableviewcell/ –

+0

посетите эти ссылки, это может помочь вам http://stackoverflow.com/questions/26752645/dynamic-uitablecellview-height – Aravi

+3

Возможный dyblicate http://stackoverflow.com/q/18527227/2012219 – gbk

ответ

0

Итак, у меня есть MasterViewController, в котором есть tableView. Затем вы хотите добавить еще один tableView, который является частью класса MyCustomcell, внутри одной из ячеек таблицыViewView MasterViewController.

Добавление customCell с tableView не имеет большого значения, но вычисление и поддержание высоты MasterViewController в соответствии с данными, которые будут отображаться в CustomCell, несколько сложнее. Если вы задаете вопрос о том, как добавить CustomCell в tableView, тогда есть много хороших обучающих программ, которые вы можете легко получить просто быстрым Google.

Я столкнулся с подобной ситуацией и решил проблему следующим образом. Надеюсь это поможет.

1) Если у вас есть customCell, где вам просто нужно показывать тексты. Тогда высота таблицыView MasterViewController может легко поддерживаться автоматически с автоматическим расположением в зависимости от содержания текстов. This tutorial имеет очень хорошее объяснение.

2) Если вы добавляете tableView внутри одной из элементов таблицы MasterViewcontroller, это становится сложно. Теперь высота ячейки MasterViewController зависит от высоты высоты таблицы TableConsole. Я пытался справиться с этой ситуацией, применяя различные способы Swift 3, но, наконец, получил результат, следуя следующим образом: -

class MasterViewController: UIViewController { 
      @IBOutlet weak var tableView: UITableView! 

      var customCell:MyCustomCell? = nil 

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "myCustomCell", for: indexPath) as! MyCustomCell 
     cell.selectionStyle = UITableViewCellSelectionStyle.none 
     customCell = cell 
     return cell 
    } 

} 

extension MasterViewController:UITableViewDelegate{ 

    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 

     if let aHeight = customCell?.tableView.contentSize.height{ 
      return aHeight 
     } 

     return 0 

    } 

} 
+0

Каковы ограничения, которые я должен применить к UITableView (который находится внутри UITableViewCell)? –

+0

вы можете просто добавить lead, trail, top, bottom to 0. – skJosh

+0

Я сделал это, но высота стола теперь равна нулю. –

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