上下文:我有一個自定義單元格的tableview。每個單元都有一個下載資源的按鈕。當按下一個按鈕時,應該禁用tableview中的所有其他按鈕。延遲加載tableview時更改屬性?
所以我的問題是,我無法獲得對tableview上的所有行的引用,因爲它是延遲加載。因此,當我嘗試訪問其他行時,它會失敗,因爲它沒有在開始禁用按鈕的位置添加對象。
下面是它的代碼可能是我的問題,更多的啓發:
NSMutableArray *cells = [NSMutableArray array];
for (NSInteger i = 0; i < [mainTableView numberOfRowsInSection:1]; ++i) {
WSVideoLibraryTableCell *addedCell = (WSVideoLibraryTableCell *)[mainTableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:1]];
NSLog(@"CELL ADDED: %@", addedCell);
[cells addObject:addedCell];
}
if (stateEnabled) {
for (WSVideoLibraryTableCell *cell in cells) {
[[cell downloadButton] setEnabled:YES];
}
}
else
{
for (WSVideoLibraryTableCell *cell in cells) {
[[cell downloadButton] setEnabled:NO];
}
}
我嘗試添加一些代碼只需要可見的單元格。 NSArray *array = [mainTableView visibleCells]
但是接下來的問題是不可見的單元格會啓用按鈕,並且在可見的行上發生奇怪的事情,它們會一次又一次出現在tableView上(與懶加載和更改它們有關嗎?)
非常感謝您的意見或建議!
關於對象?我想你是指我的自定義單元格。該屬性已經存在,因爲該按鈕位於單元格內部並且獲取其狀態很容易。但是我沒有得到的是你所說的延遲加載的條件來根據屬性禁用它們。我怎樣才能做到這一點?對不起,我不明白延遲加載是如何工作的... – Joze
我猜你的意思是設置一個布爾鍵,當按下按鈕時。然後在延遲加載的方法(我想)'cellForRowAtIndexPath'我相應地設置單元格的屬性...我認爲這就是你的意思我會嘗試它,如果不是,請糾正我:) – Joze
我假設每個cell從一個對象集合中代表了一些對象(在你的情況下,也許是一個'Resource'對象,它本身就是一個'UITableViewCell')。在這種情況下,您只需將一個屬性添加到'Resource'中,以確定它是否已啓用。然後,當您爲「Resource」對象添加單元格時,請檢查其「Enabled」屬性並相應地禁用單元格。 – NominSim