gpt4 book ai didi

ios - 如何通过将类名传递给方法来创建子类 UIViewController?

转载 作者:行者123 更新时间:2023-11-29 10:58:02 25 4
gpt4 key购买 nike

我有 4 个子类 UIViewController,分别命名为 AViewController、BViewController、CViewController、DViewController。

现在在工具栏中,单击 A,内容 View 显示 AViewController 的 View ,...等等。

我是个懒人,讨厌写 4 次 "alloc]initwithnibname"的代码,所以我写了下面的代码在代码中创建它们。

- (void)addChildView:(UIViewController *)childViewController className:(NSString *)viewClassName{
if (childViewController != nil) {
// add view
[self.contentView addSubview:childViewController.view];
}else
{
// init.
Class v = NSClassFromString(viewClassName);
UIViewController *childViewControllerNew = nil;
childViewControllerNew = [[v alloc] initWithNibName:viewClassName bundle:nil];
[self.contentView addSubview:childViewController.view];
}}

但这不会创建任何ViewController,调试时总是返回nil。

你能告诉我问题是什么吗?我可以通过这种方法创建子类 UIViewController 吗?

提前致谢!

最佳答案

问题是您正在创建一个 View Controller ,但是您没有对它做任何事情。有两个问题:

  1. 打字错误意味着您设置了错误的 View ([self.contentView addSubview:childViewController.view];)
  2. 您没有保留 childViewControllerNew

您应该将最后一段代码更改为:

Class v = NSClassFromString(viewClassName);
UIViewController *childViewControllerNew = nil;
childViewControllerNew = [[v alloc] initWithNibName:viewClassName bundle:nil];
[self.contentView addSubview:childViewControllerNew.view];

[self addChildViewController:childViewControllerNew];

关于ios - 如何通过将类名传递给方法来创建子类 UIViewController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17336232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com