Ako je možné odstrániť všetky riadky z UITableView naraz? Pretože keď znova načítam zobrazenie tabuľky s novými údajmi, stále vkladám nové riadky:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
CustomTableViewCell *cell = (CustomTableViewCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[CustomTableViewCell alloc] initWithFrame:CGRectZero] autorelease];
}
//... setting the new cell here ...
return cell;
}
Ďakujem.
odpovede:
46 pre odpoveď č. 1To urobiť.
Pred opätovným načítaním tabuľky pomocou
[tableView reloadData];
Odstráňte všetky objekty z vášho poľa TableView (pole, ktoré naplnilo váš TableView) Napríklad.
[myArray removeAllObjects];
[tableView reloadData];
4 pre odpoveď č. 2
Odstráňte všetky svoje súbory dataSource
, potom zavolajte reloadData
.
4 pre odpoveď č. 3
FYI, vyššie uvedené riešenie „Vymažte všetky svoje dataSource a potom zavolajte reloadData.“ znie to, akoby sa zasadzovali za toto:
TableView.dataSource = nil;
[TableView reloadData];
Skúsil som to a zdalo sa, že to funguje. Ibaže v iOS 8.1 som dostal náhodné pády. A mám na mysli náhodne, ako v, mohol som ten kód spustiť 10x a 1x by sa zrútil. Použil som teda odporúčanú odpoveď:
[myArray removeAllObjects];
[tableView reloadData];
a teraz som dobrý.
2 pre odpoveď № 4
Zdá sa, že nevymazávate svoju zbierku údajov (NSArray
) pred pridaním ďalších údajov. The UITableView
zvyčajne zobrazí všetky údaje z vášho poľa. Ak nechcete predchádzajúce riadky / údaje, mali by ste pred pridaním nových informácií pole vyprázdniť. Potom zavolajte [yourTableView reload]
0 pre odpoveď č. 5
najskôr vymažte svoje staré údaje
myArray = nil;
[tableView reloadData];
potom načítajte svoje nové údaje
myArray = newData;
[tableView reloadData];