首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >取消模态后的iOS TableView重播

取消模态后的iOS TableView重播
EN

Stack Overflow用户
提问于 2014-07-03 02:38:08
回答 2查看 2.7K关注 0票数 0

在我的应用程序中,我在一个表视图中列出了核心数据条目。我希望允许用户使用作为表单视图的模式显示的详细视图来编辑记录。我在编辑记录时观察到了一些奇怪的行为。

流动:

  1. 用户用记录加载表视图。-working
  2. 用户选择一个记录进行编辑。-working
  3. 用户编辑视图控制器中作为模态表单视图显示的记录。-working
  4. 用户保存编辑并取消窗体视图。-working
  5. Tableview显示对先前编辑的记录的正确更改。-working
  6. 用户重复步骤2-4,选择要编辑的不同记录。-working
  7. Tableview显示所有记录的正确数据。-Not在工作。

在步骤7中,tableview将第一次编辑记录的显示恢复到其原始状态。随后的记录编辑将导致所有以前的编辑恢复到原来的状态。如果表视图被取消并重新加载,则记录是正确的,显示所有编辑。

我在tableview的ViewWillAppear方法中使用了tableview重新加载,但是当模式表单视图控制器被取消时,它似乎不会被触发。

在我的tableviewcontroller控制器代码中:

代码语言:javascript
复制
-(void)viewWillAppear:(BOOL)animated
{
    [self.tableView reloadData];
}

四处寻找,我还没有找到解决办法,我希望有人能给我指明正确的方向。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-03 04:21:45

当你呈现一个模态视图时,主视图控制器的视图永远不会消失。因此,在排除模态视图之后,将不会调用viewWillAppear()。

您可以尝试在模式视图中实现自定义委托函数,并在主视图控制器中设置它,当数据更新时,启动委托函数来重新加载位于主视图( tableView )的tableView。

了解iOS中的委托函数,以及

如何创建委托函数如下所示:

  1. 在ModalView.h中: //定义委托@协议ModelViewDelegate -(DidUpdateData)的协议;@end @interface ModalView: ViewController { //创建委托实例id委托;}//定义委托实例@property (非原子,赋值) id委托;
  2. 在modalView.m中: @综合代表; 然后在您的函数中,将委托函数放在需要触发的位置,例如:

  • updateDataIntoDatabase{ ..。//更新已完成的工作。self.delegate didUpdateData;//解聘modalView;}

所以,在你的MainViewController.h

代码语言:javascript
复制
#import ModalView.h

代码语言:javascript
复制
@interface ModalView: ViewController <ModelViewDelegate > {
      ...
}

在MainViewController.m中,您将收到一个警告,表示您需要实现已经声明的委托函数。因此,设置委托函数,并执行您喜欢做的事情:

代码语言:javascript
复制
- (void) didUpdateData{
    [self.tableView reloadData];
}

在实例化modelView实例之后,不要忘记将您的modalView委托设置为self。如果没有,您的委托函数将不会被触发。

代码语言:javascript
复制
modalView.delegate = self;
票数 4
EN

Stack Overflow用户

发布于 2014-07-03 04:06:26

当触发Modal视图控制器时,请使用完成块:

代码语言:javascript
复制
-(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];
    }];
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24544078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档