如何在iPhone SDK中单击按钮清空整个tableview?
在我的iPhone应用程序中,我使用一个tableview根据单击的按钮显示不同的数据集 现在,由于我使用相同的tableView,每次选择新按钮时,我都需要清空tableView内容 这是很正常的要求吗?因此,使用7个表来显示7个不同的数据集是低效的 问题: 我已经看到该表被清除了,但是当我们在表中显示一些其他数据时,前面的数据就会出现在背景中,如后面的屏幕截图所示。 我曾尝试将数组设置为nil并重新加载tableView,但似乎不起作用 解决此问题的方法是什么 我已经检查了代码,对我来说似乎是合适的 您可以参考屏幕截图,更好地了解实际发生的情况 之前(即首次单击事件) 之后(即在其他类别按钮之后单击事件类别按钮) 你们可以在背景中清楚地看到一个不同的图像,它应该和上面截图中的图像相同。这不是按钮,我正在将UIImageView添加到tableViewCell如何在iPhone SDK中单击按钮清空整个tableview?,iphone,objective-c,cocoa-touch,uitableview,ios4,Iphone,Objective C,Cocoa Touch,Uitableview,Ios4,在我的iPhone应用程序中,我使用一个tableview根据单击的按钮显示不同的数据集 现在,由于我使用相同的tableView,每次选择新按钮时,我都需要清空tableView内容 这是很正常的要求吗?因此,使用7个表来显示7个不同的数据集是低效的 问题: 我已经看到该表被清除了,但是当我们在表中显示一些其他数据时,前面的数据就会出现在背景中,如后面的屏幕截图所示。 我曾尝试将数组设置为nil并重新加载tableView,但似乎不起作用 解决此问题的方法是什么 我已经检查了代码,对我来说似乎
NSArray是不可变的,也就是说,您不能修改它 使用NSMutableArray和 [mutArr removeAllObjects]
然后重新加载tableView。它对我有效。NSArray是不可变的,也就是说,您不能修改它 使用NSMutableArray和 [mutArr removeAllObjects]
然后重新加载tableView。这对我很有用。在button action方法中,调用tableView重新加载,并将null赋值给之前初始化单元格的对象
[tableView reloadData];
在button action方法中,调用tableView重新加载,并将null分配给之前初始化单元格的对象
[tableView reloadData];
我认为如果你的数组为零,它将不起作用。尝试使用以下命令将其初始化为空数组:
myArr = [NSArray array];
然后重新加载tableView数据。否则我想我们需要看看你的代码
编辑
这仍然有点不清楚(你的问题中仍然没有代码),但我认为你的问题确实与你的细胞构造有关。是否在每个CellForRowatineXpath消息上添加UIImageView
我猜你有类似的想法:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"cellName";
myCell *cell = (myCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
//CONSTRUCT CELL.
//THIS IS THE ONLY PLACE WHERE YOU SHOULD ADD SUBVIEWS TO YOUR CELL
}
//Are you adding subviews here? -you shouldn't
//configure data in cell
return cell;
我认为如果你的数组为零,它将不起作用。尝试使用以下命令将其初始化为空数组:
myArr = [NSArray array];
然后重新加载tableView数据。否则我想我们需要看看你的代码
编辑
这仍然有点不清楚(你的问题中仍然没有代码),但我认为你的问题确实与你的细胞构造有关。是否在每个CellForRowatineXpath消息上添加UIImageView
我猜你有类似的想法:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"cellName";
myCell *cell = (myCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
//CONSTRUCT CELL.
//THIS IS THE ONLY PLACE WHERE YOU SHOULD ADD SUBVIEWS TO YOUR CELL
}
//Are you adding subviews here? -you shouldn't
//configure data in cell
return cell;
您可以为numberOfRowsInSection返回零,为isEmpty添加BOOL变量
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if(isEmpty){
return 0;
}else{
// your current logic
}
}
//action when button clicked
-(IBAction)myAction{
isEmpty = TRUE;
[self reloadData];
}
您可以为numberOfRowsInSection返回零,为isEmpty添加BOOL变量
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if(isEmpty){
return 0;
}else{
// your current logic
}
}
//action when button clicked
-(IBAction)myAction{
isEmpty = TRUE;
[self reloadData];
}
}
它将清空您的表视图。。。你的需要还不清楚
}
它将清空您的表视图。。。您的需求不明确请阅读上述问题。我已经提到了清空数组和重新加载tableView似乎不起作用。无论如何,感谢您的输入。据我所知,您希望在tableview中看到空单元格,而当前在单击按钮时tableview中没有单元格??不,我希望在单击按钮时清除现有数据并在tableview中填充新数据。我已经添加了关于我所面临问题的截图。请检查一下。在这种情况下可以做什么?阅读上面的问题。我已经提到了清空数组和重新加载tableView似乎不起作用。无论如何,感谢您的输入。据我所知,您希望在tableview中看到空单元格,而当前在单击按钮时tableview中没有单元格??不,我希望在单击按钮时清除现有数据并在tableview中填充新数据。我已经添加了关于我所面临问题的截图。请检查一下。在那种情况下能做些什么?我也试过,但对我不起作用。它不会清空该表,因为当我们重新加载数据时,[mutArr count]为0,因此它在tableView的numberOfRowsinSection方法中返回0。因此,它不会进入cellForRowAtIndexPath方法。在这种情况下应该怎么做?检查您是否正确地合成了tableView。我也曾经遇到过这个问题,在调试时我发现有两个diff实例是为同一个tableView创建的。请检查,我已经添加了关于我所面临问题的截图。请检查一下。在这种情况下可以做什么?另外,我已经合成了我的tableview,所以应该不会有任何问题。我认为你对每个按钮操作使用不同的数组。如果是这样,发布你的代码,我会检查你不能像这样更改NSArray的值。您如何从可变数组中删除值?将其设置为零?我尝试了相同的方法,但对我无效。它不会清空该表,因为当我们重新加载数据时,[mutArr count]为0,因此它在tableView的numberOfRowsinSection方法中返回0。因此,它不会进入cellForRowAtIndexPath方法。在这种情况下应该怎么做?检查您是否正确地合成了tableView。我也曾经遇到过这个问题,在调试时我发现有两个diff实例是为同一个tableView创建的。请检查,我已经添加了关于我所面临问题的截图。请检查一下。在这种情况下可以做什么?另外,我已经合成了我的tableview,所以应该不会有任何问题。我认为你对每个按钮操作使用不同的数组。如果是这样,发布你的代码,我会检查你不能像这样更改NSArray的值。您要如何从中删除值