我不确定在xCode项目中使用多个文件来显示此问题的最佳方法,所以请原谅我,如果这不是最佳方式 - 请告诉我我还能做些什么显示!
在任何情况下,我都有一个从笔尖(.xib)显示的自定义表视图,并在该自定义表视图中有多个动态高度标签。一切都表现得很好,除了表格单元格高度总体上不适应内部元素增加的高度。
我能看到的是,Table View的行高值被用作绝对值,我不知道如何覆盖它。我将其设置为200,并且每个表都固定,即使内容超出了这个高度:
我使用自动布局,它在单元格元素本身中运行良好......它只是未设置的单元格高度。
这是我在单元格中元素的代码:
class EventTableViewCell: UITableViewCell {
func loadItem (#date:String, title:String, description:String, image:UIImage) {
dateLabel.text = date
titleLabel.text = title
eventImage.image = image
eventDescription.text = description
titleLabel.setTranslatesAutoresizingMaskIntoConstraints(false)
titleLabel.numberOfLines = 0
self.contentView.addSubview(titleLabel)
eventDescription.setTranslatesAutoresizingMaskIntoConstraints(false)
eventDescription.numberOfLines = 0
self.contentView.addSubview(eventDescription)
}
@IBOutlet weak var eventImage: UIImageView!
@IBOutlet weak var dateLabel: UILabel!
@IBOutlet weak var titleLabel: UILabel!
@IBOutlet weak var eventDescription: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
处理数据的类:
class Contacts: UITableViewController, UITableViewDataSource, UITableViewDelegate {
var eventData:[AnyObject] = []
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return eventData.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("customCell", forIndexPath: indexPath) as EventTableViewCell
if (eventData.count != 0) {
var event: AnyObject? = eventData[indexPath.row]
if let unwrappedEvent: AnyObject = event {
let eventTitle = unwrappedEvent["title"] as? String
let eventDate = unwrappedEvent["date"] as? String
let eventDescription = unwrappedEvent["description"] as String
let eventImage = unwrappedEvent["image"] as? UIImage
if (eventImage != nil){
cell.loadItem(date: eventDate!, title: eventTitle!, description: eventDescription, image: eventImage!)}
else {
let testImage: UIImage = UIImage(named: "test-image.png")
cell.loadItem(date: eventDate!, title: eventTitle!, description: eventDescription, image: testImage )
}
}
}
return cell
}
override func viewDidLoad() {
super.viewDidLoad()
var nib = UINib(nibName: "CustomTableViewCell", bundle: nil)
tableView.registerNib(nib, forCellReuseIdentifier: "customCell")
let manager = AFHTTPRequestOperationManager()
manager.GET( "http://[my-json-file].json",
parameters: nil,
success: {
(operation: AFHTTPRequestOperation!,responseObject: AnyObject!) in
println("JSON: " + responseObject.description)
self.eventData = responseObject!["events"] as [AnyObject]
self.tableView.reloadData()
},
failure: { (operation: AFHTTPRequestOperation!,error: NSError!) in
println("Error: " + error.localizedDescription)
})
}
我还不确定此时我还能做些什么才能让单元格高度动态运行。我几乎尝试过所有事情。任何帮助将不胜感激,再次,如果我需要从我的代码中显示其他任何内容,请告诉我。
非常感谢!
答案 0 :(得分:0)
我注意到在您的Contacts类中,您没有实现tableView(_ tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath)
方法。我怀疑如果你这样做,那么代码就可以了。