从另一个 .storyboard 扩展 MyViewController

Posted

技术标签:

【中文标题】从另一个 .storyboard 扩展 MyViewController【英文标题】:Extending MyViewController from another .storyboard 【发布时间】:2015-12-11 09:44:51 【问题描述】:

我尝试创建类似于 SDK 的东西 - 默认视图包,开发人员可以扩展和自定义的控制器

如果用户的视图不是以编程方式生成,而是在单独的 .storyboard 中创建,我无法理解用户如何扩展我的 UIViewController。

对于 UIView,我们做这样的事情

-(id)init

NSArray *subviewArray = [[NSBundle mainBundle] loadNibNamed:@"myXib" owner:self options:nil];
return [subviewArray objectAtIndex:0];


UIViewController 如何从 .storyboard 获取自己的视图?

我不能使用 .xib 文件,因为我的 viewControllers 具有动态 TableViewCells 的 TableViews。

更新: 我认为以编程方式创建 UIViewController 很容易,添加 coupe 视图和所有 ChildViewControllers 将具有与他的 ParentViewController 相同的控件。 我不想以编程方式添加此控件,而是为此使用 .storyboard。我无法想象 - 如何绑定它。

【问题讨论】:

我猜你需要使用情节提要参考...这在 xcode 7 中可用 【参考方案1】:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MyStoryboard" bundle:nil];
MyViewController * myVC = (MyViewController *)[storyboard instantiateViewControllerWithIdentifier:@"MyViewControllerIdentifier"];

【讨论】:

不,伊戈尔!关键字“扩展”、“获得自己的观点”。你的例子在我的例子中循环。我看解决方案“takeViews”而不是“实例化”。 好的,只需使用 myVC.view 。还是我还是没明白你的意思? 好的,在这种情况下,您可以尝试覆盖自定义 ViewController 中的 initWithCoder: 方法并从情节提要中初始化 vc 对象。当您的用户在他的故事板上添加 ViewController 时,将调用 initWithCoder: 并且从您的故事板初始化的自定义视图控制器将返回。【参考方案2】:

使用您的库的人可以简单地将他的 ViewController 的类从情节提要中设置为您的 ViewController,如下所示:

【讨论】:

以上是关于从另一个 .storyboard 扩展 MyViewController的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 应用程序及其扩展程序之间共享 Storyboard

从另一个 ViewController 呈现故事板 ViewController

无法从另一个类中关闭 UIPopover

从另一个项目添加另一个 Stroyboard

从另一个类 Swift 访问 navigationItem.title

为啥我不能从另一个控制器中删除视图?