我正在尝试扩展我的单元格,当有额外的文本输入时。我不希望“...”最后我希望单元格自动扩展。我已经采取了以下两个步骤,但它无法正常工作。
第1步
self.tableView.dataSource = self
self.tableView.delegate = self
tableView.estimatedRowHeight = 44
tableView.rowHeight = UITableViewAutomaticDimension
第2步
messageLabel.numberOfLines = 0
由于某种原因,我的细胞没有扩大我做错了什么?
import UIKit
import Foundation
struct postStruct {
let username : String!
let message : String!
let photoURL : String!
}
class GeneralChatroom: UIViewController, UITableViewDataSource, UITableViewDelegate, UITextFieldDelegate {
@IBOutlet weak var messageTextField: UITextField!
@IBOutlet weak var tableView: UITableView!
var generalRoomDataArr = [postStruct]()
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.dataSource = self
self.tableView.delegate = self
tableView.estimatedRowHeight = 44
tableView.rowHeight = UITableViewAutomaticDimension
}
@IBAction func backButtonPressed(_ sender: UIButton) {
self.performSegue(withIdentifier: "BackToRoom", sender: nil)
}
//Message Send button is pressed data uploaded to firebase
@IBAction func sendButtonPressed(_ sender: UIButton) {
let message : String = self.messageTextField.text!
}
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return generalRoomDataArr.count // your number of cell here
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell")
//Set message label to display message
let messageLabel = cell?.viewWithTag(2) as! UILabel
messageLabel.text = generalRoomDataArr[indexPath.row].message
messageLabel.numberOfLines = 0
// your cell coding
return cell!
}
}//END CLASS
更新 我有当前的限制,但我的动态细胞增长不起作用。我的细胞还在显示“......”任何人都能帮我理解为什么吗?我尝试重置为建议的约束,但它不起作用。
答案 0 :(得分:0)
确保自定义UITableViewCell的自动布局。更改 estimatedRowHeight ,试试这个:
tableView.estimatedRowHeight = 200
答案 1 :(得分:0)
您可以使用UITableView的委托方法:
func tableView(_ tableView: UITableView,heightForRowAt indexPath: IndexPath) -> CGFloat
{
return .AutomaticDimension
}
func tableView(_ tableView: UITableView,estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat
{
return 60
}
但首先必须将标签w.r.t的autolayout约束设置为TableViewCell的内容视图。
答案 2 :(得分:0)
Swift 2.3
// MARK: - TableViewDelegate Setup
extension NotificationVC : UITableViewDelegate,UITableViewDataSource {
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
}