我正在尝试将自定义单元格添加到主 - 详细信息应用程序中。我通过使用界面构建器创建了一个xib来创建自定义单元格。应用程序加载,我可以使用"添加按钮"添加项目。但是单元格显示不正确,我不知道问题可能在哪里。
感谢您的任何意见!
主视图控制器:
import UIKit
class MasterViewController: UITableViewController {
var objects = NSMutableArray()
override func awakeFromNib() {
super.awakeFromNib()
}
override func viewDidLoad() {
super.viewDidLoad()
var nipName=UINib(nibName: "FeedTableCell", bundle:nil)
self.tableView.registerNib(nipName, forCellReuseIdentifier: "cell")
// Do any additional setup after loading the view, typically from a nib.
self.navigationItem.leftBarButtonItem = self.editButtonItem()
let addButton = UIBarButtonItem(barButtonSystemItem: .Add, target: self, action: "insertNewObject:")
self.navigationItem.rightBarButtonItem = addButton
}
func insertNewObject(sender: AnyObject) {
if objects == nil {
objects = NSMutableArray()
}
objects.insertObject(NSDate.date(), atIndex: 0)
let indexPath = NSIndexPath(forRow: 0, inSection: 0)
self.tableView.insertRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as FeedTableCell
cell.loadItem(user:"user1", hoop: "#Yolo", post: "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magn")
return cell
}
override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
// Return false if you do not want the specified item to be editable.
return true
}
override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if editingStyle == .Delete {
objects.removeObjectAtIndex(indexPath.row)
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
} else if editingStyle == .Insert {
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view.
}
}
}
与自定义单元格关联的类:
import UIKit
class FeedTableCell : UITableViewCell{
@IBOutlet var userLabel: UILabel
@IBOutlet var hoopLabel: UILabel
@IBOutlet var postLabel: UILabel
func loadItem(#user: String, hoop: String, post: String) {
userLabel.text = user
hoopLabel.text = hoop
postLabel.text = post
}
}
界面构建器中的自定义单元格
"添加"是第一次按下
"添加"多次按下
答案 0 :(得分:1)
你所看到的是一堆都是高度为0的细胞,细胞分离器全部相互挤压 - 这就形成了灰色视图。在iOS8中,单元格高度将根据您的自动布局约束自动计算。
确保将所有子视图固定到内容视图的边缘,以便单元格知道它应该有多高。
这里有一个例子:http://www.raywenderlich.com/73602/dynamic-table-view-cell-height-auto-layout