如何在切换选项卡视图后从NSMutableArray中删除对象

时间:2013-09-15 12:15:04

标签: ios objective-c nsmutablearray uitabbarcontroller

所以每当按下按钮或标签视图发生变化时,我都会尝试删除数组中的所有对象[myMutableArray removeAllObjects]。我知道对于一个按钮,我可以使用prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender,它可以工作。但是如何使用标签执行相同操作?

我这样做是因为我正在使用Parse,一个Web后端服务,我正在查询用户的朋友并将其放在tableview上,但除非我从数组中删除所有对象,否则我会得到重复的名称。

非常感谢任何帮助!!

2 个答案:

答案 0 :(得分:3)

您应该为UITabBarController提供代理人。该委托应该实现方法- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController。然后将代码放在那里。像这样:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
    [myMutableArray removeAllObjects];// if the delegate is the object holding reference to the array. otherwise put objects removal into a separate method and send this message from here 

}

或类似,如果委托是另一个对象:

 - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
 {
   [myObj removeObjects];
 }

- (void)removeObjects//provide this method for a class which holds myMutableArray
  {
     [myMutableArray removeAllObjects];  
  }

希望这有帮助

答案 1 :(得分:-1)

当您离开时,您可以在视图重新出现时执行此操作,而不是删除它们

-(void)ViewWillAppear:(BOOL)Animated

在我的一些应用程序中,我在

中检查重复项
-(NSFetchedResultsController *)fetchedResultsController

将fetchedResultsController设置为nil将调用函数