【问题标题】:UIView disappears after modalViewController is removed from superviewmodalViewController 从 superview 中移除后 UIView 消失
【发布时间】:2023-03-11 15:47:01
【问题描述】:

在我的应用程序中,我有一个 tabBarController 和一个 navigationController。我的视图控制器之一是 TableViewController,在导航栏下我添加了一个 uiView 作为视图的子视图,如下所示:

rectangleInfo = [[UIView alloc] initWithFrame:CGRectMake(0,0,[[UIScreen mainScreen] applicationFrame].size.width,26)]; rectangleInfo.autoresizingMask = (UIViewAutoresizingFlexibleWidth); rectangleInfo.backgroundColor = [UIColor darkGrayColor]; [self.view addSubview: rectangleInfo];

当我点击 tableView 中的一个单元格时,我会像这样推送一个 UIViewController:

[feedViewController setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];

[[self navigationController] presentModalViewController:feedViewController animated:YES];

在我从 tableViewNavigationController 弹出模态视图几次后,rectangleInfo UIView 消失了。

我像这样弹出我的模态视图:

[[UIApplication sharedApplication] setStatusBarHidden:NO animated:YES];
[self setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
[self dismissModalViewControllerAnimated:YES];

知道为什么我从父视图中删除模式视图后 tableViewController 的子视图 (rectangleInfo) 消失了吗?

提前谢谢你。

【问题讨论】:

    标签: iphone uiview model-view-controller


    【解决方案1】:

    我很好奇你想用你的 rectangleInfo 视图做什么?从它的大小来看,您似乎正在尝试模仿状态栏。为什么?如果需要,您可以隐藏状态栏。

    您可以尝试的另一件事是在 Interface Builder 中直观地创建 UIView。实际上不要将它添加到您的主视图中,而是将其创建为 XIB 中具有适当大小等的单独 UIView。然后在 Xcode 中为它创建一个插座并连接它。接下来,当您的视图控制器加载时,将其添加为代码中的子视图。看看这是否有所作为。这特别奇怪,因为您说它只是在弹出几次后才消失。如果你以非模态方式 push 和 pop 是否会遇到同样的问题,例如:

    [[self navigationController] pushViewController:feedViewController animated:YES];
    [[self navigationController] popViewControllerAnimated:YES];
    

    【讨论】:

    • 你好,马特,对于 rectangleInfo 视图,我不想模仿状态栏。这张照片更好地展示了我试图用那个视图做的事情img269.imageshack.us/img269/9001/picture1wim.png。在 NavigationBar 下是 rectangleInfo,上面有一个 UILabel 显示当前类别。我会尝试你的建议,我会带着反馈回来。谢谢
    • 你好,马特,我尝试了你的建议。问题仍然出现,而且因为我有一个标签栏,所以我的 feedViewController 没有出现在它上面。如果我试图隐藏它,我的视图无法使用标签栏占用的空间..
    • hmm 我再次测试了我的应用程序,我发现我的子视图正在消失,因为我收到了内存警告。操作系统正在释放任何不可见的视图。奇怪的是它不会重建 rectangleInfo 子视图,但在内存警告后再次设置其他视图...
    【解决方案2】:

    我通过正确实现 viewDidLoad 和 viewDidUnload 方法来创建和释放我的子视图解决了这个问题。

    【讨论】:

      猜你喜欢
      • 2011-04-11
      • 2020-04-28
      • 2021-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-09
      • 2019-04-08
      • 1970-01-01
      相关资源
      最近更新 更多