2017-02-07 4 views
0

Я использую tableview и autolayout. Я хочу, чтобы подсчет массива на основе увеличил высоту tableview в раскадровке. как это сделать?установить динамическое ограничение высоты стола в раскадровке swift

Я использую ниже код, но не работает

@property(strong,nonatomic)iboutlet nslayoutconstraint *dynamicheight; 

self.dynamicheight.constant=[self.array count]*44 

любезно помочь мне кто-нибудь за это?

https://i.stack.imgur.com/jadT7.png https://i.stack.imgur.com/dP3tZ.png

+0

Пожалуйста, перейдите по этой ссылке, это будет полезно: https://www.raywenderlich.com/129059/self-sizing-table-view-cells –

+0

Ваш вопрос и принятый ответ несовместимы. Прочитайте заголовок вопроса, который вы попросили, и посмотрите на ответ, который вы приняли, @Prisy –

+0

, но его работа с динамической высотой tableview в swift –

ответ

0

Попробуйте this-

если вы используете Tableview клетки добавить ниже код в cellForRowAt метод

cell.textLabel?.numberOfLines = 0 
    cell.textLabel?.lineBreakMode = .byWordWrapping 

А также установить эти свойства UITableView внутри viewDidLoad

self.tableView.tableFooterView = UIView() 
self.tableView.estimatedRowHeight = 120 //Your estimated height 
self.tableView.rowHeight = UITableViewAutomaticDimension 

Надеются, что это будет работать :)

Проверьте ниже полный код:

import UIKit 

class ViewController: UIViewController { 
@IBOutlet weak var guestTView: UITableView! 

var guests: [String]? 

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.guests = ["hi this is john and i am a ios developer gjjgjgjgjg hzsg bnfddf dfbdnvfvd bdhgfjgjfgn ngfjggffgfhgh hdfghfggsgg","hi this is john and i am a ios developer gjjgjgjgjg hzsg bnfddf dfbdnvfvd bdhgfjgjfgn ngfjggffgfhgh hdfghfggsg","hi this is john and i am a ios developer gjjgjgjgjg hzsg bnfddf dfbdnvfvd bdhgfjgjfgn ngfjggffgfhgh hdfghfggsg","hi this is john and i am a ios developer gjjgjgjgjg hzsg bnfddf dfbdnvfvd bdhgfjgjfgn ngfjggffgfhgh hdfghfggsg","hi this is john and i am a ios developer gjjgjgjgjg hzsg bnfddf dfbdnvfvd bdhgfjgjfgn ngfjggffgfhgh hdfghfggsg","hi this is john and i am a ios developer gjjgjgjgjg hzsg bnfddf dfbdnvfvd bdhgfjgjfgn ngfjggffgfhgh hdfghfggsg","hi this is john and i am a ios developer gjjgjgjgjg hzsg bnfddf dfbdnvfvd bdhgfjgjfgn ngfjggffgfhgh hdfghfggsg"] 

    self.guestTView.estimatedRowHeight = 70.0 
    self.guestTView.rowHeight = UITableViewAutomaticDimension 
    self.guestTView.tableFooterView = UIView() 

} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

} 

extension ViewController: UITableViewDelegate, UITableViewDataSource { 

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

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return (guests?.count)! 
} 

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) 
    cell.textLabel?.numberOfLines = 0 
    cell.textLabel?.lineBreakMode = .byWordWrapping 
    cell.textLabel?.text = guests?[indexPath.row] 

    return cell 

} 

} 
+0

cell.textLabel? .lineBreakMode = .byWordWrapping показывает ошибку –

+0

что это за ошибка, пожалуйста, покажи мне. –

+0

Мне нужна динамическая высота таблицы, основанная на содержимом массива. но не установлено –

0

использование следующих

@IBOutlet weak var tableView: UITableView! //connect the table view 

//do following in viewDidLoad method 
tableView.estimatedRowHeight = 100 //Your estimated height 
tableView.rowHeight = UITableViewAutomaticDimension 
+0

не работает @rock –

+0

покажите еще код и свою раскадровку.пожалуйста, –

+0

[1]: https://i.stack.imgur.com/jadT7.png [1]: https://i.stack.imgur.com/dP3tZ.png –

0

Если вы хотите, чтобы ваши tableViewheight быть динамичными, выполните следующие действия:

1) Применить только leading, trailing, top и Height ограничивает представление таблицы.

2) Исключить ограничение bottom, которое вы применили.

3) принять выходное отверстие, что height ограничения как:

@IBOutlet weak var heightConstraint: NSLayoutConstraint! 

4) в viewWillAppear() Измените dynamicHeight ограничения как:

let rowCount = self.array.count 
self.dynamicHeight.constant = CGFloat(rowCount) * 44 
view.updateConstraints() 
self.yourTableView.reloadData() 

И после этого я не вижу никакого смысла в Внедрение UITableViewAutomaticDimention и estimatedRowHeight

Это указано в Swift Изменить его на объектив C

+0

i Я уже использовал это. но не работает –

+0

, как вы уже упоминали в своем вопросе, вы хотите, чтобы высота вашего стола была динамичной, не так ли? –

+0

Я тоже не знаю, что делали, а что нет. Bcz Я дал правильный ответ, хотя prissy предпочитал другого пользователя, даже она дала мой скопированный ответ. и теперь мой ответ был удален bcz prssy. –

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