gpt4 book ai didi

ios - 如何从表格中删除单元格

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:24:20 24 4
gpt4 key购买 nike

我使用 asihttprequest 下载文件,但当下载失败时,与表中文件关联的单元格不会从 TableView 中删除。

当我滑动删除时,我有这个错误:

* Terminating app due to uncaught exception 'NSRangeException', reason: '* -[NSMutableArray objectAtIndex:]: index 0 beyond bounds for empty array'

如何删除单元格?

MANAGER.h

NSMutableArray *contentArray;

MANAGER.m

- (id)initWithStyle:(UITableViewStyle)style {
if (self == [super initWithStyle:style]) {

self.navigationController.navigationBar.tintColor = [UIColor blackColor];
self.navigationItem.rightBarButtonItem = self.editButtonItem;
contentArray = [[NSMutableArray alloc] init];
progArray = [[NSMutableArray alloc] init];
self.view.backgroundColor = [UIColor clearColor];

//saveTo = [[NSUserDefaults standardUserDefaults] stringForKey:@"save_to"];

AppDelegate_iPhone* delegate = (AppDelegate_iPhone *)[[UIApplication sharedApplication] delegate];
if([delegate saveTo] != nil)
{
saveTo = [delegate saveTo];
}

if(saveTo == nil)
{
saveTo = @"/";
}


allFiles = [[NSMutableArray alloc] init];
NSDirectoryEnumerator *dirEnum = [ [ NSFileManager defaultManager ] enumeratorAtPath:saveTo];
NSString *file;
while ((file = [ dirEnum nextObject ]))
{
if(file != nil)
{
if([file rangeOfString:@".mp4" options: NSCaseInsensitiveSearch].length > 0 || [file rangeOfString:@".mov" options: NSCaseInsensitiveSearch].length > 0 || [file rangeOfString:@".m4v" options: NSCaseInsensitiveSearch].length > 0 || [file rangeOfString:@".pdf" options: NSCaseInsensitiveSearch].length > 0 )

{
[ allFiles addObject: file];
}
}
}
}
return self;
}

// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {

if(indexPath.section == 0)
{

if (editingStyle == UITableViewCellEditingStyleDelete)
{
Selected = indexPath.row;
//Remove The Temporary File
NSFileManager *fileManager = [NSFileManager defaultManager];
if([fileManager fileExistsAtPath:[(ASIHTTPRequest *)[contentArray objectAtIndex:indexPath.row] temporaryFileDownloadPath]])
{
......


- (void)requestFailed:(ASIHTTPRequest *)request
{

[contentArray removeObject:request];
[progArray removeObject:request];
[self reloadMyData];
[self.tableView reloadData];
}

-(void)reloadMyData
{
allFiles = [[NSMutableArray alloc] init];
AppDelegate_iPhone* delegate = (AppDelegate_iPhone *)[[UIApplication sharedApplication] delegate];
if([delegate saveTo] != nil)
{
saveTo = [delegate saveTo];
}

NSDirectoryEnumerator *dirEnum = [ [ NSFileManager defaultManager ] enumeratorAtPath:saveTo];
NSString *file;
while ((file = [ dirEnum nextObject ]))
{
if(file != nil)
{
//if([file rangeOfString:@".mp4" options: NSCaseInsensitiveSearch].length > 0 || [file rangeOfString:@".mov" options: NSCaseInsensitiveSearch].length > 0 || [file rangeOfString:@".mp3" options: NSCaseInsensitiveSearch].length > 0 )
if([file rangeOfString:@".mp4" options: NSCaseInsensitiveSearch].length > 0 || [file rangeOfString:@".mov" options: NSCaseInsensitiveSearch].length > 0 || [file rangeOfString:@".m4v" options: NSCaseInsensitiveSearch].length > 0 || [file rangeOfString:@".pdf" options: NSCaseInsensitiveSearch].length > 0)
{
[ allFiles addObject: file];
}
}
}


}



#pragma mark -
#pragma mark Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)aTableView {
// Return the number of sections.
return 2;
}


- (NSInteger)tableView:(UITableView *)aTableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
if(section == 0)
{
return [progArray count];
}
else {
return [allFiles count];
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

NSString *CellIdentifier = [NSString stringWithFormat:@"CellIdentifier_%i_%i",indexPath.section,indexPath.row];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

cell = nil;

if(indexPath.section == 0)
{
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
cell.accessoryType = UITableViewCellAccessoryNone;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
[cell addSubview:[progArray objectAtIndex:indexPath.row]];
}
else {
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
// cell.accessoryType = UITableViewCellAccessoryNone;
cell.selectionStyle = UITableViewCellSelectionStyleBlue;
cell.textLabel.text = [allFiles objectAtIndex:indexPath.row];
}


return cell;
}

最佳答案

从 tableView 中删除行时,您需要在删除行的同时从数据源中删除对象。如果从数据源中删除一行,则需要在删除时更新表(-deleteRowsAtIndexPaths:withRowAnimation:),以维护tableView和数据源之间的关系。

关于ios - 如何从表格中删除单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6657919/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com