Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在iPhone SDK中单击按钮清空整个tableview?_Iphone_Objective C_Cocoa Touch_Uitableview_Ios4 - Fatal编程技术网

如何在iPhone SDK中单击按钮清空整个tableview?

如何在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,但似乎不起作用 解决此问题的方法是什么 我已经检查了代码,对我来说似乎

在我的iPhone应用程序中,我使用一个tableview根据单击的按钮显示不同的数据集

现在,由于我使用相同的tableView,每次选择新按钮时,我都需要清空tableView内容

这是很正常的要求吗?因此,使用7个表来显示7个不同的数据集是低效的

问题:

我已经看到该表被清除了,但是当我们在表中显示一些其他数据时,前面的数据就会出现在背景中,如后面的屏幕截图所示。 我曾尝试将数组设置为nil并重新加载tableView,但似乎不起作用

解决此问题的方法是什么

我已经检查了代码,对我来说似乎是合适的

您可以参考屏幕截图,更好地了解实际发生的情况

之前(即首次单击事件)

之后(即在其他类别按钮之后单击事件类别按钮)

你们可以在背景中清楚地看到一个不同的图像,它应该和上面截图中的图像相同。这不是按钮,我正在将UIImageView添加到tableViewCell


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的值。您要如何从中删除值