1

Я пытаюсь, чтобы все строки в моей таблице имели собственную высоту строки, основанную на строках текста на ярлыке в этой ячейке. Моя точка отправления является Wenderlich Учебник здесь: https://www.raywenderlich.com/129059/self-sizing-table-view-cellsСтроки все одинаковой высоты после использования UITableViewAutomaticDimension

Я использую метод UITableViewAutomaticDimension, как вы можете увидеть ниже. Но по какой-то причине, когда я запускаю симуляцию, все строки имеют одинаковую высоту. Кажется, не имеет значения, какое число я использовал для оценки высоты строки в коде или того числа, которое я набрал для высоты строки в ячейке просмотра таблицы в раскадровке. Он всегда выходит на одну и ту же высоту для всех строк.

Что мне здесь не хватает? Спасибо всем!

import UIKit 

class LoLFirstTableViewController: UITableViewController { 

    var tasks:[Task] = taskData 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     tableView.rowHeight = UITableViewAutomaticDimension 
     tableView.estimatedRowHeight = 60.0 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 

    override func numberOfSections(in tableView: UITableView) -> Int { 
     return 1 
    } 

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

    @IBAction func cancelToLoLFirstTableViewController(_ segue:UIStoryboardSegue) { 
    } 

    @IBAction func saveAddTask(_ segue:UIStoryboardSegue) { 
     if let AddTaskTableViewController = segue.source as? AddTaskTableViewController { 

      if let task = AddTaskTableViewController.task { 
      tasks.append(task) 

       let indexPath = IndexPath(row: tasks.count-1, section: 0) 
       tableView.insertRows(at: [indexPath], with: .automatic) 
      } 
     } 
    } 

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) 
    -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "TaskCell", for: indexPath) 
     as! TaskCell 
     let task = tasks[indexPath.row] as Task 
      cell.task = task 
     return cell 
     } 
} 

` contraints simulation

+0

показать свою ячейку. У вас должны быть неправильные ограничения автоопределения. –

+0

У вас есть контент, который должен иметь размер по-разному от ячейки к ячейке? Относительно * «Кажется, не имеет значения, какое число я добавляю для оценки высоты строки в коде или того числа, которое я ввел для высоты строки в ячейке просмотра таблицы в раскадровке» *; ни одна из этих вещей не имеет значения при определении конечной высоты ячейки авторазмера. – Connor

+0

Да, контент должен быть разным, по-разному, от ячейки к ячейке. Мой пример текста варьируется от одной строки до трех строк. Я прикрепляю скриншоты моих ограничений и то, что на данный момент выглядит выход симулятора. Спасибо Умайру и Коннору! –

ответ

0

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

Я предлагаю полностью исключить виды стека. Теперь вы сможете сделать это обычным способом, и это сработает.

+0

Это загружаемый проект, который измеряет размеры ячеек в соответствии с количеством текста в ярлыке. Вы можете загрузить и запустить его, и вы увидите, что он работает. https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch08p424variableHeights/ch21p722variableHeights/RootViewController.swift – matt

+0

Удивительно, спасибо большое, матовый! Итак, как я могу добавить обратно в кнопку флажка справа, не добавляя обратно в представление стека? –

+0

Просто поставьте флажок справа. Это может быть аксессуар, или вы можете добавить его как подзадачу 'contentView' так же, как метку. Главное, чтобы получить ограничения правильно. Вероятно, вы хотите, чтобы эта вещь была вертикально центрирована, с ограничением высоты и ширины, и располагалась на правом краю своего супервизора. - В любом случае представление в стеке действительно кажется излишним в кадре. – matt