2015-02-23 59 views
11

我有一個UITableView,每個單元都有一個圖像和兩個標籤,你可以在第一張照片看自漿紗細胞製造的UITableView跳

enter image description here

所以我想利用TI自除了兩件事外,一切都很好:

1)第一個和第二個單元格沒有正確顯示內容,但是在向下滾動然後返回到它們後,一切正常。我試圖在viewDidApper中使用[tableview reloadData],但它沒有幫助。首先看標籤他們不適合。您可以在此視頻上觀看https://www.youtube.com/watch?v=I9DGBl1c5vg

查看第一個單元格上的標籤。

2)這是一個艱難的。我正在滾動桌子,一切都很好,但是當我選擇該行時,問題就會發生。它推動我到詳細視圖,但是當我按下「返回」並返回到主視圖時,tableview跳轉,所以我不回到選定的行,同樣如果我滾動表格,它不會平滑滾動,但是跳躍。這裏是兩個視頻的鏈接,第一個顯示滾動是光滑的https://www.youtube.com/watch?v=9wAICcZwfO4如果我不去詳細視圖,第二個顯示跳躍問題https://www.youtube.com/watch?v=fRcQ3Za1wDM

這是絕對確定的自我大小的細胞連接,因爲如果我不使用它,這個問題沒有發生。如果你需要一個顯示正確功能的視頻,告訴我。

+0

沒有u使用的標籤,在你的圖像視圖的限制? – 2015-02-23 13:41:22

+0

是的,有 3圖像約束:1)領先空間2)頂部空間3)拖尾空間; 第一個標籤的約束:1)領先空間2)頂部空間3)尾部空間; 對第二個標籤的4個約束1)領先空間2)頂部空間3)尾部空間4)底部空間 – igrrik 2015-02-23 13:58:46

+0

當您應用約束時,label1的界限是什麼? – 2015-02-23 14:02:00

回答

7

好的,我解決了這兩個問題。

問題1

我在 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath加入這兩行

[cell.contentView setNeedsLayout]; 
[cell.contentView layoutIfNeeded]; 

return cell

問題2

之前將溶液出現至b非常簡單。我只是需要實現viewWillDissapear並在其重新載入數據,所以代碼看起來像這樣

- (void)viewWillDisappear:(BOOL)animated;{ 
    [super viewWillDisappear:animated]; 
    [self.tableView reloadData]; 
} 

解決方案對我來說很簡單,如果它不爲別人工作,在這裏我發現了一些有用的鏈接。
1)UITableView layout messing up on push segue and return. (iOS 8, Xcode beta 5, Swift)
2)http://useyourloaf.com/blog/2014/08/07/self-sizing-table-view-cells.html

4

不幸的是我相信你問的兩個問題都是IOS錯誤。

問題(1)

甲容易解決由該blog建議。

當第一次顯示錶格視圖時,您可能會發現某些單元格尺寸不正確。但是當您滾動表格視圖時,新的單元格將顯示正確的行高。要解決此問題,您可以在視圖出現後強制重新加載:

只需將以下內容添加到您的viewDidAppear方法中即可。我已經測試過它,它工作得很好。

[self.tableView reloadData]; 

問題(2)

這第二個問題是這以下問題的副本:

IOS 8 UITableView self-sizing cells jump/shift visually when a new view controller is pushed

一種解決方法是由問題本人,的作者建議了看起來沒問題。不過,我還沒有嘗試過這個。

好的,我通過在sizeThatFits中緩存我的單元高度並在代表內返回估計單元高度的值來解決此問題。精美的作品。

對於其他建議的解決方案,請隨時關注該問題。

+0

謝謝你的回答。 1)正如我之前所說的重新加載數據不適用於我2)我不明白他是如何做到這一點,並且他也沒有使用約束,但我會問他 – igrrik 2015-02-23 16:12:42

+0

@igrrik,也許你可以從這個[鏈接](https://www.dropbox.com/s/rhza2amiuztpar8/SelfSizingDemoTemplate.zip?dl=0)下載該項目並與你的比較,看看有什麼不同?這個示例代碼由[blog](http://www.appcoda.com/self-sizing-cells/)提供,''self.tableView reloadData''在那裏工作。或者,也許,如果你願意,你可以發佈一些相關的代碼,讓我們看看他們呢?也可能是因爲其他原因。 – 2015-02-23 16:17:01

+0

我們取得了一些進展!第一個問題已經解決。但第二個仍然在這裏。 那麼實際上只有兩行代碼,這是由這個博客提供:self.tableView.estimatedRowHeight = 239.0; self.tableView.rowHeight = UITableViewAutomaticDimension; 其他一切都是用約束來完成的。 我的項目和他們之間的區別是,我有一個imageview在我的細胞和detailview。 – igrrik 2015-02-24 18:46:48