【问题标题】:IOS/Autolayout: Change to Presenting View After Presented Controller DismissedIOS/Autolayout:在显示的控制器关闭后更改为显示视图
【发布时间】:2018-01-18 19:53:56
【问题描述】:

我正在尝试让自动布局在带有滚动视图的视图控制器上正常工作。当我第一次加载视图控制器时,它并没有做我想做的事。但是,如果我启动第二个模态 VC——恰好是一个 Edit VC,然后将其关闭,而不做任何其他事情,原始 VC 会正确布局(我想要的方式)。

起初,textview 的大小不适应它的内容,而只是反映了故事板中的占位符视图。

在启动并关闭模态 VC 后,textview 会采用其内容。

据我所知,在 2ndVC 启动的过程中没有发生任何可以改变 1st 的任何事情。

我的日志显示 ViewDidLoad 在最初加载时仅由第一个 VC 调用一次。 Viewwillappear 被第一个 VC 调用两次:当它最初加载时,然后在第二个 VC 被关闭后。

当您关闭呈现的 VC 时,除了 view 之外,还有其他方法会在呈现的 VC 中触发吗?

这是 VC1 中启动第二个 VC 的代码。

  UIStoryboard *storyBoard = self.storyboard;
    IDEditListVC *editVC =
    [storyBoard instantiateViewControllerWithIdentifier:@"editlist"];
    editVC.list = _list;
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController: editVC];
     [self presentModalViewController:nav animated:YES];

//这是VC1 viewWillAppear中获取文本视图高度的代码。启动和关闭 2nd VC 前后的结果变化

self.textView.text = listText;
float listHeight = self.textView.contentSize.height;
NSLog(@"listHeight%f",listHeight);

【问题讨论】:

  • 你在哪里执行显示​​第二个 VC 的代码
  • 它在按下编辑按钮时被调用。编辑按钮有一个调用代码的处理程序。
  • 看来你的问题在于自动布局,我认为在展示模型 VC 后它得到“修复”的事实只是一个副作用。因此,让我们处理根本原因。向我们展示您的限制条件,scrollViewtextView 之间的关系等。

标签: ios autolayout dismissviewcontroller


【解决方案1】:

试试这个

-(void)viewDidLayoutSubviews
 {
    self.textView.text = listText;
    float listHeight = self.textView.contentSize.height;
    NSLog(@"listHeight%f",listHeight);
 }

【讨论】:

  • 当我包含这个方法时,会发生完全相同的事情。在第一次加载时,它会记录 139(故事板中文本视图的高度)。模态VC启动和关闭后,根据87的文本量给出真实高度。
  • 然后,试试 viewDidAppear
  • 我扔了线 [self.textView sizeToFit];在 float listHeight 之前,这似乎解决了这个问题。但是,它会创建另一个,因为它会缩小 textview 的宽度。
猜你喜欢
  • 1970-01-01
  • 2020-10-02
  • 1970-01-01
  • 2018-06-01
  • 2019-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-27
相关资源
最近更新 更多