【问题标题】:What is the Parent of a ViewController placed as SubView?放置为 SubView 的 ViewController 的父级是什么?
【发布时间】:2023-03-04 11:48:01
【问题描述】:

我有一个ViewController,我在其中一个子视图上放置了另一个ViewController。在那个ViewController(放置在子视图中)中,我需要在点击事件上转到另一个ViewController。但是当我可以 self.navigationController pushViewController 方法时,我的日志显示它已推送但屏幕没有改变。

我附加的图像描述了场景,匹配细节是主机 ViewController。白色矩形是一个 UIView ,来宾ViewController 被放置在这个白色矩形视图中。当我点击圆形按钮(点击写入)时,另一个ViewController 应该替换主机ViewController

这是一个复杂的应用程序,所以在这里粘贴代码应该不是一个好主意。只是一些解释会对我有很大帮助,我可以自己修复代码。关于我的错误需要一些提示。

提前感谢您的帮助。

【问题讨论】:

  • 也许你应该尝试调用他的父视图控制器导航控制器
  • 我已经试过了。但它的父 ViewController 为空。不知道为什么。
  • 很有趣...您可以尝试的另一种方法是为您的子视图视图控制器创建自定义初始化方法,您可以在其中传递主视图控制器,以便您可以使用它来呈现一个新的视图控制器
  • 检查 self.navigationController 是否为 nil?尝试推动像 [self presentViewController: animated: completion:]
  • @LucaIaco 这不是一个好主意,因为使用 ARC,它们不会被释放,因为存在循环引用。

标签: iphone objective-c uiviewcontroller subview


【解决方案1】:

当您将 viewController 的视图添加为子视图时,您还需要将您的 viewController 注册为 parentViewController 的子视图控制器。

例子:

UIViewController *mainVC = [UIViewController new];
UIViewController *childVC = [UIViewController new];

[mainVC addChildViewController:childVC];
[mainVC.view addSubview:childVC.view];

UIViewController *parentVC = childVC.parentViewController;

这里parentVCmainVC

【讨论】:

  • 感谢您的帮助,我会尽力回复。
  • 你好@malex,我已经设法让它工作了。当我将 childView 作为子视图附加时,我在 childVC 中获取了 ParentVC 属性并设置了这个属性,例如 childVC.parent = self。不确定它是多么好的解决方案,但至少它正在工作。 :) 你可以做必要的编辑,我会接受的。感谢您的帮助。
  • 是的,你可以做到,而且效果很好。但我编写了规范的方式(由 Apple)在嵌入式视图控制器之间建立连接。
  • 你试过我的方法了吗?
  • 是的,首先我通过上面告诉你的解决方案让它工作。实际上我的场景有点复杂,所以很快就出现了另一个问题。您的方法或解决方案是正确的。这帮助我修复了我的代码。现在一切都很好。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-15
  • 2013-01-31
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
相关资源
最近更新 更多