2017-02-27 81 views
0

我在我的圖片UITableViewCell和更改單元格w.r.t圖像高度的約束後,我想重新加載單元格。如何重新加載UITableViewCell Objective C?

我嘗試了這種方法,但是這個函數花費的時間很少,因此,應用程序暫時停滯不前。

[cell reloadRowsAtIndexPaths:indexPath withRowAnimation:UITableViewRowAnimationNone]; 

你能告訴我其他approac簡單重裝電池,而不是表的?

+1

如果根據行爲設置內容擁抱和內容壓縮優先級,則可以實現此功能。即將內容設置爲249,將內容壓縮設置爲751. –

+0

不能在更改所有內容填充後更改行高? –

+0

indexPaths需要數組。你可以使用像這樣的文字:reloadRowsAtIndexPaths:@ [indexPath1] – GeneCode

回答

2

目標C

- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation; 

要重新加載部1與例如第2第3行第2行, 你必須這樣做:

NSIndexPath* indexPath1 = [NSIndexPath indexPathForRow:2 inSection:1]; 
NSIndexPath* indexPath2 = [NSIndexPath indexPathForRow:3 inSection:2]; 
// Add them in an index path array 
NSArray* indexArray = [NSArray arrayWithObjects:indexPath1, indexPath2, nil]; 
// Launch reload for the two index path 
[self.tableView reloadRowsAtIndexPaths:indexArray withRowAnimation:UITableViewRowAnimationFade]; 

或者你也可以這樣做

[self.tableView beginUpdates]; 
[self.tableView reloadRowsAtIndexPaths:@[indexPathOfYourCell] withRowAnimation:UITableViewRowAnimationNone]; 
[self.tableView endUpdates]; 

// **************************************** *********************************

SWIFT

override func reloadRows(at indexPaths: [Any], with animation: UITableViewRowAnimation) { 
} 

要重新加載第2節的第2行和第2節的第3行,例如, 您必須執行此操作:

var indexPath1 = IndexPath(row: 2, section: 1) 
var indexPath2 = IndexPath(row: 3, section: 2) 
// Add them in an index path array 
var indexArray: [Any] = [indexPath1, indexPath2] 
//Launch reload for the two index path 
self.tableView.reloadRows(at: indexArray, with: .fade) 

或者你也可以做這樣的

self.tableView.beginUpdates() 
self.tableView.reloadRows(at: [indexPathOfYourCell], with: []) 
self.tableView.endUpdates() 
+0

我應該用rowpath還是indexpath? – Coder

+0

表格視圖:第 –

+0

不,這不是幫助...通過這種方法應用程序崩潰說...「陣列超過範圍3」 – Coder

0

嘗試完全加載圖像更改單元格高度就裝作什麼

#import <ImageIO/ImageIO.h> 

NSMutableString *imageURL = [NSMutableString stringWithFormat:@"http://www.myimageurl.com/image.png"]; 

CGImageSourceRef source = CGImageSourceCreateWithURL((CFURLRef)[NSURLURLWithString:imageURL], NULL); 
NSDictionary* imageHeader = (__bridge NSDictionary*) CGImageSourceCopyPropertiesAtIndex(source, 0, NULL); 
NSLog(@"Image header %@",imageHeader); 
NSLog(@"PixelHeight %@",[imageHeader objectForKey:@"PixelHeight"]); 
之前和之後獲得的圖像尺寸

這個你可以得到圖像大小,調整UIImageView並獲得它的動態高度

爲了能夠異步執行此操作,可以使用YYWebImage

+0

我試圖獲取圖像大小,但與此我的應用程序掛了幾秒鐘。 – Coder

+0

看看這個:https://github.com/ibireme/YYWebImage –

+0

謝謝你的回覆。它有一點幫助。除此之外,我使用了[cell setNeedsLayout]; [cell layoutIfNeeded]; 最後,它的工作:) – Coder