UITableViewCells初始加载视图/显示问题

所以我有一个UITableView加载了许多列引号。 进入显示这些数据的UITableView ,单元格似乎最初没有正确加载,文本看起来真的压扁和/或切断,大约1/2秒后,它正确加载,一切工作正常。

这发生在每次我加载表视图。

例如:

在这里输入图像说明

这是一个与.estimatedrowheight...or is it because the view cannot load the data into the问题.estimatedrowheight...or is it because the view cannot load the data into the UITableView`足够快? 我已经尝试修改行高,但无济于事。

编辑

它看起来像当我明确设定这样的高度 –

captionsTableView.rowHeight = 80

它工作得很好,因为在单元格中每个单元的高度都是80点,没有初始加载故障。

但使用captionsTableView.rowHeight = UITableViewAutomaticDimensioncaptionsTableView.estimatedRowHeight = 80.0打破它

编辑2 – 代码

 class CaptionsController: UIViewController, UITableViewDelegate, UITableViewDataSource { @IBOutlet weak var captionSegment: UISegmentedControl! @IBOutlet weak var captionText: UINavigationItem! @IBOutlet weak var captionSearchBar: UISearchBar! @IBOutlet weak var captionsTitle: UILabel! var receiveImage:UIImage! //var receiveCategoryText:String! //var firstNameCell: UITableViewCell = UITableViewCell() //var firstNameText: UITextField = UITextField() var model:ModelData! let tapRec = UITapGestureRecognizer() var currentCell: UITableViewCell! var fav: String! let basicCellIdentifier = "CustomCells" @IBOutlet weak var captionsTableView: UITableView! var c: CustomCells! var captionJSON: JSON = nil override func viewDidLoad() { super.viewDidLoad() model = (self.tabBarController as CaptionTabBarController).model captionJSON = model.quoteSelection() captionText.title = model.categoryName captionsTableView.delegate = self captionsTableView.dataSource = self self.navigationController?.navigationBar.titleTextAttributes = [ NSFontAttributeName: UIFont(name: "CherrySwash-Regular", size: 25)!, NSForegroundColorAttributeName: UIColor(red:0.0/255.0, green: 159.0/255.0, blue: 172.0/255.0, alpha: 1.0)] configureTableView() captionsTableView.reloadData() tapRec.numberOfTapsRequired = 2 tapRec.addTarget(self, action: "tappedView") self.view.addGestureRecognizer(tapRec) self.view.userInteractionEnabled = true } func configureTableView() { captionsTableView.rowHeight = UITableViewAutomaticDimension captionsTableView.estimatedRowHeight = 80.0 } override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated) //deselectAllRows() //captionsTableView.reloadData() } override func viewDidAppear(animated: Bool) { captionsTableView.reloadData() } func deselectAllRows() { if let selectedRows = captionsTableView.indexPathsForSelectedRows() as? [NSIndexPath] { for indexPath in selectedRows { captionsTableView.deselectRowAtIndexPath(indexPath, animated: false) } } } func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return captionJSON.count } func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { return customCellAtIndexPath(indexPath) } func customCellAtIndexPath(indexPath:NSIndexPath) -> CustomCells { var cell = captionsTableView.dequeueReusableCellWithIdentifier(basicCellIdentifier) as CustomCells setTitleForCell(cell, indexPath: indexPath) setSubtitleForCell(cell, indexPath: indexPath) setImageForCell(cell, indexPath: indexPath) return cell } func setTitleForCell(cell:CustomCells, indexPath:NSIndexPath) { let item = captionJSON[indexPath.row]["quote"] cell.mainLabel.text = item.stringValue } func setSubtitleForCell(cell:CustomCells, indexPath:NSIndexPath) { let item = captionJSON[indexPath.row]["author"] cell.creditLabel.text = item.stringValue } func setImageForCell(cell:CustomCells, indexPath:NSIndexPath) { //let item = Array(Array(model.quoteItems.values)[indexPath.row])[1] as? String //if (item == "fav") { //cell.favImgView.image = UIImage(named: "icon-heart-fav")! //} else { cell.favImgView.image = UIImage(named: "icon-heart")! //} } func tappedView(){ //need to add filled icon, as well as logic to not change image upon select of favorited cell var image : UIImage = UIImage(named: "icon-heart-fav")! c.favImgView.image = image } func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { c = captionsTableView.cellForRowAtIndexPath(indexPath) as CustomCells var captiontabBar:CaptionTabBarController = CaptionTabBarController() model.quote = c.mainLabel.text! model.author = c.creditLabel.text! println(" quote!!! " + model.quote) self.tabBarController?.selectedIndex = 0 //let secondViewController:SelectionsController = SelectionsController() //self.presentViewController(secondViewController, animated: true, completion: nil) //let returnController = self.storyboard!.instantiateViewControllerWithIdentifier("selections") as? UIViewController //self.presentViewController(returnController!, animated: true, completion: nil) /*for tempCell: UITableViewCell in tableView.visibleCells() as [UITableViewCell] { var image : UIImage = UIImage(named: "icon-heart")! tempCell.imageView?.image = image } var image : UIImage = UIImage(named: "icon-heart-overview")! c.favImgView?.image = image*/ } } class CustomCells: UITableViewCell { @IBOutlet var mainLabel: UILabel! @IBOutlet var creditLabel: UILabel! @IBOutlet var favImgView: UIImageView! } 

添加你的代码(void)viewWillAppear:

看起来你正在做viewDidload。

 - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; if (![self.p_tableView respondsToSelector:@selector(tableView:heightForRowAtIndexPath:)]) { self.p_tableView.rowHeight = UITableViewAutomaticDimension; self.p_tableView.estimatedRowHeight = 100.0f; } }