2014-10-21 113 views
0

這是我有這個特殊問題的第二個項目。今天早些時候,我通過故事板創建了一個tableview和原型單元格。我添加了標籤編號的子視圖,所以我可以從cellforrowatindexpath委託方法中獲取它們。儘管當我運行應用程序時,子視圖雖然不在正確的位置。我使用autosizing進行佈局,並確保設置代表。有沒有人有這個問題?原型可重複使用tableview單元格渲染子視圖效果不佳

可能相關:有時當我離開故事板並返回時,子視圖改變了它們的框架,使它們變平(高度= 0),或者x隨機更改爲1,500。不知道爲什麼,但是這也發生在我遇到問題的舊項目上。舊項目我通過重置cellforrowatindexpath方法中所有子視圖的框架來解決該問題,但我不喜歡這是合法的解決方案。

編輯:這裏是一些代碼和截圖。

//MARK: - UITableview delegate 
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    return 93.0 
} 
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return 7; 
} 
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    var cell = tableView.dequeueReusableCellWithIdentifier("order") as? UITableViewCell 
    println("cell: \(cell)") 
    var cancel = cell?.viewWithTag(4) as UIButton 
    var price = cell?.viewWithTag(3) as UILabel 
    var date = cell?.viewWithTag(2) as UILabel 
    var address = cell?.viewWithTag(1) as UILabel 
    cancel.addTarget(self, action: "cancelOrder:", forControlEvents: UIControlEvents.TouchUpInside) 

    return cell! 
} 

screenshot

+1

顯示故事板,顯示單元的代碼,顯示如何重用的代碼。一切工作正常,你做錯了什麼 – 2014-10-21 23:15:58

+0

更新...有沒有很多特別是w /代碼。正如你在截圖中看到的,所有的UILabel都是重疊的。事實上,他們中的2個甚至不在該單元格的邊界內。它似乎是一個故事板問題,而不是代碼問題 – MingMan 2014-10-22 14:37:03

回答

1

我最近有這個問題。它似乎是自定義單元格中內容視圖的自動佈局錯誤。

我所做的只是在awakeFromNib中爲我的自定義單元重新設置了自動調整掩碼,並且所有事情都按預期工作。

- (void) awakeFromNib 
{ 
    self.contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 
} 
+0

因此,我只是在故事板中使用了一個「原型」單元格(添加了問題的屏幕截圖)和一個可重用的標識符。沒有子類或XIB/NIB。你的建議是否仍然適用?如果是這樣,我應該在哪裏放置該代碼? – MingMan 2014-10-22 14:38:51

+0

其實考慮你的截圖,我認爲它是故事板。我最近也遇到了這個問題,在編輯別的東西之後,事情會在故事板中跳躍。據我所知,這只是Xcode 6中故事板的一個錯誤。我不得不按照我想要的方式將它們移回原來的位置,但它在過去的幾天仍然保留着。我相當肯定,這只是當前Xcode中的一個小故障,希望很快能夠解決。 – pbevis 2014-10-22 23:51:33