我有UITabBarViewController
2 个视图。第一个视图有UITableView
1 个部分和 5 行。第二个视图也UITableView
有一个设置选项,如 UISwitches。我的问题是如何通过在设置视图上使用 UISwitches 从第一个视图中显示和隐藏或删除单元格?提前致谢。
编辑
这个视频解释了我想要做什么(检查应用程序视图)
我有UITabBarViewController
2 个视图。第一个视图有UITableView
1 个部分和 5 行。第二个视图也UITableView
有一个设置选项,如 UISwitches。我的问题是如何通过在设置视图上使用 UISwitches 从第一个视图中显示和隐藏或删除单元格?提前致谢。
编辑
这个视频解释了我想要做什么(检查应用程序视图)
在表视图控制器的 viewWillAppear 方法中,我将检查设置是否已更改。如果它已经改变,那么我会通过调用它的 reloadData 方法来重绘单元格。有时建议通过 performSelectorOnMainThread 调用 reloadData:
[ self performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO]
并且您的数据加载方法(numberOfSectionsInTableView、numberOfRowsInSection、cellForRowAtIndexPath 等)必须相应地考虑设置值。
您可以使用 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];
}
您应该在每次 UISwitch 更改后重新加载您的表格视图。例如: - 你从你的 UISwitch 设置一个委托到你的 UITabBarViewController (或控制事件的类) - 你应该将你的 tableview 的单元格的数量存储在一个变量中 - 这个变量将在每次 UISwitch 更改后更改 - 在变量更改后,你应该重新加载表格视图