0

我有UITabBarViewController2 个视图。第一个视图有UITableView1 个部分和 5 行。第二个视图也UITableView有一个设置选项,如 UISwitches。我的问题是如何通过在设置视图上使用 UISwitches 从第一个视图中显示和隐藏或删除单元格?提前致谢。

编辑

这个视频解释了我想要做什么(检查应用程序视图)

按这里

4

3 回答 3

1

在表视图控制器的 viewWillAppear 方法中,我将检查设置是否已更改。如果它已经改变,那么我会通过调用它的 reloadData 方法来重绘单元格。有时建议通过 performSelectorOnMainThread 调用 reloadData:

[ self performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO]

并且您的数据加载方法(numberOfSectionsInTableView、numberOfRowsInSection、cellForRowAtIndexPath 等)必须相应地考虑设置值。

于 2012-09-03T11:21:31.187 回答
1

您可以使用 NSNotificationCenter 来完成此操作

在您的 firstView 中,您可以编写如下代码:

 -(void)viewDidLoad{
 [[NSNotificationCenter defaultCenter] removeObserver:self];
 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(modifyCell:) name:@"modifyCell" object:nil];
 }

   //make sure this is declared in your .h
 -(void)modifyCell:(NSNotification*)notif
  {
    if (notif) {
              //cellindex to modify
    NSString *cellIndex = [[notif userInfo] objectForKey:@"index"];
    [yourDataSource removeObjectAtIndex:[cellIndex intValue]]
    [yourTableView reloadData];
     }
  }

在你的第二个视图中:

  -(void)switchChanged
  {
     NSNotificationCenter *ncSubject = [NSNotificationCenter defaultCenter]; 
     NSDictionary* dict = [NSDictionary dictionaryWithObjectsAndKeys:@"indexNum",@"index", nil];
      [ncSubject postNotificationName:@"modifyCell" object:nil userInfo:dict];
      [ncSubject removeObserver:self];
  }
于 2012-09-03T10:59:15.077 回答
1

您应该在每次 UISwitch 更改后重新加载您的表格视图。例如: - 你从你的 UISwitch 设置一个委托到你的 UITabBarViewController (或控制事件的类) - 你应该将你的 tableview 的单元格的数量存储在一个变量中 - 这个变量将在每次 UISwitch 更改后更改 - 在变量更改后,你应该重新加载表格视图

于 2012-09-03T10:53:23.280 回答