在我的应用程序中,我在一个表视图中列出了核心数据条目。我希望允许用户使用作为表单视图的模式显示的详细视图来编辑记录。我在编辑记录时观察到了一些奇怪的行为。
流动:
在步骤7中,tableview将第一次编辑记录的显示恢复到其原始状态。随后的记录编辑将导致所有以前的编辑恢复到原来的状态。如果表视图被取消并重新加载,则记录是正确的,显示所有编辑。
我在tableview的ViewWillAppear方法中使用了tableview重新加载,但是当模式表单视图控制器被取消时,它似乎不会被触发。
在我的tableviewcontroller控制器代码中:
-(void)viewWillAppear:(BOOL)animated
{
[self.tableView reloadData];
}四处寻找,我还没有找到解决办法,我希望有人能给我指明正确的方向。
谢谢!
发布于 2014-07-03 04:21:45
当你呈现一个模态视图时,主视图控制器的视图永远不会消失。因此,在排除模态视图之后,将不会调用viewWillAppear()。
您可以尝试在模式视图中实现自定义委托函数,并在主视图控制器中设置它,当数据更新时,启动委托函数来重新加载位于主视图( tableView )的tableView。
了解iOS中的委托函数,以及
如何创建委托函数如下所示:
所以,在你的MainViewController.h
#import ModalView.h和
@interface ModalView: ViewController <ModelViewDelegate > {
...
}在MainViewController.m中,您将收到一个警告,表示您需要实现已经声明的委托函数。因此,设置委托函数,并执行您喜欢做的事情:
- (void) didUpdateData{
[self.tableView reloadData];
}在实例化modelView实例之后,不要忘记将您的modalView委托设置为self。如果没有,您的委托函数将不会被触发。
modalView.delegate = self;发布于 2014-07-03 04:06:26
当触发Modal视图控制器时,请使用完成块:
-(void)editModal:(id)sender
{
KDSecondViewController *secondVC = [[KDSecondViewController alloc] init];
[self presentViewController:secondVC animated:YES completion:^{
//-- reload your table view when user dismiss the modal view
[self.tableView reloadData];
}];
}https://stackoverflow.com/questions/24544078
复制相似问题