2016-12-01 3 views
0

Я устанавливаю высоты таблиц tableView статически для каждой ячейки с помощью этого кода.Динамически установить размер TableViewCell с помощью swift

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 

if let cell = modelCollection[collection.identifier] { 
      if let _ = cell as? TiteCell{ 
       return 200 
      }else if let _ = cell as? ParagraphCell{ 
       return 500 
      } else if let _ = cell as? WebViewCell{ 
       return 1000 
      } 
} 

Я не хочу, чтобы установить статическое значение 1000 для WebViewCell больше, но высоты сайта запрошенного с WebView. Проблема в том, что я запрашиваю веб-сайт в другом классе WebViewCell после установки высоты в классе DetailViewController. Это возможно ?

ответ

1

в viewDidLoad использования

tblView.rowHeight = UITableViewAutomaticDimension tblView.estimatedRowHeight = 200

и удалить heightForRowAtIndexPath метод источника данных. Также не забудьте использовать AutoLayout в UITableViewCell.

Для получения дополнительной информации ознакомьтесь http://www.appcoda.com/self-sizing-cells/

+1

должен использовать Autolayout для этого –

+0

, но вы должны достичь динамической высоты по вашему ответу –

+0

Я не могу удалить heightForRowAtIndexPath, мне это нужно для других ячеек, я хочу установить динамическую высоту только для WebViewCell – user567

0

Вы можете сделать это, делая это

Также не забудьте использовать NSLayoutConstraints вызвать это не будет работать без него

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 

    if let cell = modelCollection[collection.identifier] { 
      if let _ = cell as? TiteCell{ 
       return 200 
      }else if let _ = cell as? ParagraphCell{ 
       return 500 
      } else if let _ = cell as? WebViewCell{ 
       return UITableViewAutomaticDimension 
      } 
    } 


func tableView(tableView: UITableView, EstimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    return 1000 
} 

Примечание: извините если мой ответ форматирует sucka. я использую свой телефон в настоящий момент

+0

Зачем использовать методы делегата 'heightForRowAtIndexPath' дважды? – Poles

+0

@Poles Другой делегат «оцененHeightForRowAtIndexPath» не «heightForRowAtIndexPath» –

+0

@ user567: Вы можете попробовать это. – Poles

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