iOS 6,StroryBoards:在模态转场后更新主场景上的 UITextView

Posted

技术标签:

【中文标题】iOS 6,StroryBoards:在模态转场后更新主场景上的 UITextView【英文标题】:iOS 6, StroryBoards: Updating UITextView on main scene after modal segue 【发布时间】:2013-06-18 15:56:17 【问题描述】:

从子场景返回后,我尝试更新父场景上的 UITextView 文本,用户可以在其中输入导航返回后应显示的内容。

父场景:

模态转场 ->

孩子

导航返回后,不会调用 viewWillAppear 或 viewDidLoad 方法,因此此 UITextView 控制器不会获得更新数据的提要。解决这个问题的最聪明的方法是什么。提前谢谢你。

编辑:

-(void)viewWillAppear:(BOOL)animated

   [super viewWillAppear:animated];
   NSLog(@"Calling viewWillAppear");
// SQLite access methods and other bla bla bla

从子场景返回后,viewWillAppear 不会被调用 -> NSLog 不会打印出来。

【问题讨论】:

为什么 viewWillAppear 没有被调用?我相信它应该是。可以贴代码吗? 因为这是模态序列,我相信这些不涉及 UINavigation。 【参考方案1】:

像您所描述的那样的模态转场在技术上一直在屏幕上,因此永远不会调用 viewDidLoadviewWillAppear

从模态视图控制器获取数据到主视图控制器的最佳方式是使用委托。通过委托方法的参数(在您自己的自定义协议中定义)发回数据。在您的委托方法的实现中,执行您所有的 SQLite 调用,并调用 setNeedsDisplay,并以您想要的任何方式存储模态视图控制器传递的值。

【讨论】:

以上是关于iOS 6,StroryBoards:在模态转场后更新主场景上的 UITextView的主要内容,如果未能解决你的问题,请参考以下文章

标签栏控制器在模态转场后消失

iOS - 如何在 Unwind Segue 中控制动画类型?

如何解除模态转场,然后将转场推入新的视图控制器

iOS Modal Segue 丢弃源 ViewController?

使用模态转场时没有动画

iOS使用UIViewControllerAnimatedTransitioning自定义presentViewController动画