我有UITabBarViewController
,其中包含2个观看次数。
第一个视图有UITableView
,其中包含1个部分和5个行。
第二个视图也有一个UITableView
,它有一个像UISwitches这样的设置选项。
我的问题是如何在设置视图中使用UISwitch显示和隐藏或从第一个视图中删除单元格?提前谢谢。
修改
此视频解释了我要做的事情(查看应用视图)
答案 0 :(得分:1)
每次更改UISwitch后,都应重新加载tableview。如: - 您将UISwitch的委托设置为UITabBarViewController(或控制事件的类) - 你应该存储你的tableview的细胞'变量中的数字 - 每次UISwitch更改后,此变量都会更改 - 变量更改后,您应该重新加载tableview
答案 1 :(得分: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];
}
答案 2 :(得分:1)
在表视图控制器的viewWillAppear方法中,我将检查设置是否已更改。如果它已经改变,那么我将通过调用reloadData方法重绘单元格。 有时建议通过performSelectorOnMainThread调用reloadData:
[ self performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO]
您的数据加载方法(numberOfSectionsInTableView,numberOfRowsInSection,cellForRowAtIndexPath等)必须相应地考虑设置值。