2014-09-19 90 views
1

這個問題讓我堅持了一段時間,我無法爲我的生活看到它爲什麼會發生。UITableViewCell在UITableViewCell中使用不同的約束條件刷新

我有一個tableView與自定義單元格里面。該單元格左上角有一個imageView,然後是從plist中查找的各種信息。我正在使用自動佈局來設置所有元素的位置。我已刷新所有約束,以便全部更新。請看下圖:當我滾動視圖向下和細胞熄滅屏幕出現

enter image description here

的問題。每次他們會被刷新,我都會把他們取出。

BSettingsCell * cell = [tableView_ dequeueReusableCellWithIdentifier:bSettingsCellIdentifier]; 

當他們刷新儘管他們現在綁定的約束現在不工作。 imageview是60x60像素,圖像是120x120像素,並命名爲[email protected]以考慮視網膜屏幕。

enter image description here

我已經把一個紅色邊框的圖片周圍,使其更容易地看到發生了什麼。正如您所看到的,由於某種原因,刷新後圖像正在向下移動。

我試過切換到框架佈局來修復它的位置,這是行不通的。

我找到this stackoverflow問題似乎提出了同樣的問題,但只提出它作爲一個問題,而不是幫助解決問題。

任何幫助將不勝感激,因爲我不喜歡用keeplayout重寫所有的代碼,如果有一個簡單的方法來解決它。

編輯:

這裏是我的cellForRowAtIndex方法:

- (UITableViewCell *)tableView:(UITableView *)tableView_ cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    BSettingsCell * cell = [tableView_ dequeueReusableCellWithIdentifier:bSettingsCellIdentifier]; 

    NSDictionary * dict = [_settingsData objectForKey:_settingsPacks[indexPath.row]]; 

    cell.nameLabel.text = [dict objectForKey:bSettingsName]; 
    cell.byLabel.text = [dict objectForKey:bArtist]; 
    cell.stickerImageView.image = [UIImage imageNamed:[dict objectForKey:bImage]]; 

    // To make it obvious that the view is changing position 
    cell.stickerImageView.layer.borderColor = [UIColor redColor].CGColor; 
    cell.stickerImageView.layer.borderWidth = 2; 

    cell.descriptionView.text = [dict objectForKey:bDescription]; 

    [cell.linkButton setTitle: [dict objectForKey:bLink] forState: UIControlStateNormal]; 
    cell.linkButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; 

    cell.selectionStyle = UITableViewCellSelectionStyleNone; 

    return cell; 
} 

,也的自動佈局約束在XIB文件中的截圖:(注意:雖然在屏幕截圖的名字不包括和通過標籤被保持與約束細)

enter image description here

+0

任何人的圖像視圖頂部空間和領先的空間,它的父? – danh 2014-09-19 00:11:17

+0

那麼,你是說你的圖像視圖的屬性名稱不是imageView(這是你提供的鏈接中提到的問題)? – rdelmar 2014-09-19 00:18:42

+0

是頂級空間超級查看是8和領先空間superview是6.這兩個和寬度和高度等於60是四個約束 – 2014-09-19 00:19:43

回答

0

雖然這個解決方案非常平凡,但確實對我有幫助,所以我會在這裏發佈。

基本上,解決方案是刪除我所做的並將其添加到每個步驟中。儘管最終它看起來完全一樣。我認爲有時候會有一些蠕蟲進入Xcode並導致問題。通常重新設置工作會解決這些問題。

當試圖解決這個問題時,我假設錯誤在我的代碼中,並且我可能花了太長時間試圖找到錯誤。最後花幾分鐘時間重做它a)通常可以讓你看到錯誤,因爲你可以看到你犯的錯誤b)它可以重置由Xcode引起的任何錯誤。

希望這有助於具有類似的挫折在未來

1

您是否嘗試過使用

BSettingsCell * cell = [tableView_ dequeueReusableCellWithIdentifier:bSettingsCellIdentifier forIndexPath: indexPath]; 

取而代之?

+0

這似乎沒有任何區別 – 2014-09-19 06:27:47

相關問題