如何隐藏从Storyboard初始化ViewController的方法?

约翰·福勒

我正在开发一个由多个人开发的许多区域的ios应用程序。我们想要一个实例化视图控制器的简单标准范例(通常来自应用程序的其他区域),例如:

MyViewController *myVC = [[MyViewController alloc] init];

但是,我们希望能够在Storyboard中定义ViewController的功能,其中每个区域可能都有一个或多个Storyboard。我们如何拥有不需要UIViewControllers来了解情节提要的细节的代码?

可以进行以下工作吗?(在MyViewController.m中)

- (instancetype)init
{
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MyViewControllerStoryboard" bundle:nil];
    return [storyboard instantiateViewControllerWithIdentifier:@"MyViewController"];
}

还是上述情况会导致内存泄漏和/或其他令人讨厌的副作用?

基恩勒

对于您的视图控制器的每种特殊情况,具有工厂方法的类别又如何呢?

例子:

您有MyViewControlle.hMyViewController.m一起MyViewControllerStoryboard.storyboard您可以创建MyViewController+FactoryMethods.hMyViewController+FactoryMethods.m使用下列内容的文件:

MyViewController + FactoryMethods.h

@interface MyViewController (FactoryMethods)

+ (instancetype)createDefaultViewController();

@end

MyViewController + FactoryMethods.m

#import "MyViewController+FactoryMethods.h"
@implementatiion MyViewController (FactoryMethods)

+ (instancetype)createDefaultViewController() {
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MyViewControllerStoryboard" bundle:nil];
    return [storyboard instantiateViewControllerWithIdentifier:@"MyViewController"];
}

@end

用法:

#import "MyViewController+FactoryMethods.h"

@implementation SomeClass

- (void)method {
    MyViewController *mvc = [MyViewController createDefaultViewController];
}

@end

使用这种方法,可以使MyViewController文件与工厂方法保持干净。而且方法非常灵活,因为团队中的任何人都可以使用自定义工厂方法轻松扩展类别。另外,每个人都应该迅速习惯于寻找控制器实例化的工厂方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

没有Storyboard时,如何初始化自定义ViewController?

来自分类Dev

是否应隐藏初始化向量?

来自分类Dev

如何存根初始化方法中调用的方法

来自分类Dev

如何从初始化方法调用类方法?

来自分类Dev

如何存根初始化方法中调用的方法

来自分类Dev

如何从初始化方法调用类方法?

来自分类Dev

在准备转场方法中初始化 ViewController 是一个好习惯吗?

来自分类Dev

Spring的初始化方法

来自分类Dev

初始化方法出错

来自分类Dev

如何同时使用swift关闭和取消初始化(Game)ViewController?

来自分类Dev

如何使用依赖注入和工厂模式实现 ViewController 自定义初始化?

来自分类Dev

如何初始化UnorderedBulkOp()?

来自分类Dev

如何初始化烟雾

来自分类Dev

如何初始化配对

来自分类Dev

如何初始化事件

来自分类Dev

如何初始化接口?

来自分类Dev

如何初始化ViewBinding?

来自分类Dev

如何初始化Crashlytics?

来自分类Dev

如何初始化矩阵

来自分类Dev

如何初始化双**?

来自分类Dev

如何初始化向量

来自分类Dev

如何停止这种在Ruby中错误初始化的方法?

来自分类Dev

在方法中初始化后如何正确显示JFrame

来自分类Dev

红宝石:如何使用参数初始化类方法?

来自分类Dev

初始化后如何自动调用特定的类方法?

来自分类Dev

在dart中初始化类时如何运行方法

来自分类Dev

如何通过调用此方法初始化此数组?

来自分类Dev

如何使用共享的init方法初始化let变量?

来自分类Dev

如何在Java通用方法中初始化实例