2017-01-31 2 views
1

У меня есть контроллер uitableview с ячейками STATIC в двух разделах. Я скорректировал высоту ячеек 0 & 1 в разделе 0 с помощью раскадровки. Тем не менее, я использовал код для расширения выбора даты после переключения UIswitch, и ячейка используется в разделе 1.Как программировать статические ячейки, чтобы взять высоту от раскадровки при программировании других ячеек, чтобы взять высоту от кода

Моя проблема в том, что код переопределяет ячейки 0 и 1 в разделе 0. Как заставить эти клетки, чтобы подняться с раскадровки? Если это невозможно, как бы я закодировал их высоту, чтобы код расширения ячейки не переопределял его?

Примечания: Я новичок и не совсем понимаю код, который я использовал, чтобы сделать расширение, поэтому, если мне нужно его изменить, дайте мне знать. Код, вставленный ниже.

var pickerVisible = false 

// MARK: - COLLAPSABLE CELL 

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    if indexPath.section == 1 && indexPath.row == 2 { 
     pickerVisible = !pickerVisible 
     tableView.reloadData() 
    } 
    tableView.deselectRow(at: indexPath, animated: true) 
} 

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
    if indexPath.section == 1 && indexPath.row == 2 && toggle.isOn == false { 
     return 0.0 
    } 
    if indexPath.section == 1 && indexPath.row == 3 { 
     if toggle.isOn == false || pickerVisible == false { 
      return 0.0 
     } 
     return 165.0 
    } 
    return 44.0 
} 

override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat { 
    return 44.0 
} 

ответ

0
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
    if indexPath.section == 0 { 
     // set height for rows in section 0 
    } else if indexPath.section == 1 { 
     // set height for rows in section 1 
    } else { 
     // default height for your tableview cell 
     return 44.0 
    }   
} 
  • Как заставить эти клетки, чтобы взять их высоту от раскадровки?

-> Я думаю, вам это действительно не нужно.

  • Как бы я закодировал их высоту, чтобы код расширения ячейки не переопределял его?

-> Его довольно легко делать то, что вы хотите (пример кода выше)

0

Я нашел еще один ответ, который на самом деле получает в корень того, что моя проблема была - как программировать одну ячейку, чтобы быть точную высоту и все остальные ячейки занимают высоту от того, что собрано в раскадровке.

Ответ вместо возвращения номер в heightForRowAt, вы можете сделать следующее:

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
    if indexPath.row == 0 { 
     return 170.0 
    } 
    // OTHERWISE, RETURN WHATEVER THE TABLEVIEW WANTS. 
    return self.tableView.rowHeight 
Смежные вопросы