使用 Storyboards 将数据模型分配给 appDelegate 中的视图控制器 - ios

Posted

技术标签:

【中文标题】使用 Storyboards 将数据模型分配给 appDelegate 中的视图控制器 - ios【英文标题】:Assign Data Model to View Controller in appDelegate with Storyboards - ios 【发布时间】:2013-12-20 23:43:40 【问题描述】:

没有Storyboards,我曾经在AppDelegatedidFinishLaunchingWithOptions中使用此代码将Data Model分配给View Controller

//Data Model Class
DataModel *model=[[DataModel alloc] init];

// TableViewController
Controller *controller=[[Controller alloc] initWithModel:model style:UITableViewStylePlain];

self.window.rootViewController=controller;

view ControllerinitWithModel方法中:

-(id)initWithModel:(SBQAllReadersModel *) aModel
             style:(UITableViewStyle)    aStyle

    if (self=[super initWithStyle:aStyle])
    
        _model=aModel;
    

    return self;

但是Storyboards 我做不到:

//Data Model Class
DataModel *model=[[DataModel alloc] init];

UIStoryboard *mainStoryboard = [UIStoryboardstoryboardWithName:@"MainStoryboard" bundle: nil];

Controller *controller = [mainStoryboard instantiateViewControllerWithIdentifier:@"Controller"];

controller.model=model;

问题是在Storyboards 中我不能使用View Controllerinit 方法,因为Storyboard 无法识别它。我必须使用它不能被覆盖的initWithCoder:,并且我不能将参数传递给awakeFromNib

您建议我将data modelStoryboardsappDelegate 分配给Controllers

非常感谢

【问题讨论】:

【参考方案1】:

鉴于 DataModel 的分配方式,我认为第一个视图控制器中的惰性 getter 是优越的(甚至比你以前的做法)。例如

// in Controller.m private interface declare @property(strong,nonatomic) DataModel *dataModel, then...

- (DataModel *)dataModel 
    if (!_dataModel) 
        _dataModel = [[DataModel alloc] init];
    
    return _dataModel;

【讨论】:

谢谢!!请看我的回答。【参考方案2】:

view controllerinitWithCoder: 中我分配了模型。

-(id)initWithCoder:(NSCoder *)aDecoder
    if(self = [super initWithCoder:aDecoder])
    
        // Do something
        _model=[[DataModel alloc] init];
    
    return self;

是的,最好使用你说的惰性吸气剂;)

那么我是否必须在rootViewControler 中分配model 并通过delegation 将模型传递给需要使用它的下一个控制器?

【讨论】:

以上是关于使用 Storyboards 将数据模型分配给 appDelegate 中的视图控制器 - ios的主要内容,如果未能解决你的问题,请参考以下文章

Sharepoint 2010 客户端对象模型 - 将列表数据分配给网格视图

SwiftUI + Combine:如何将数据分配给带有动画的模型

如何使用 weka 中保存的模型将类分配给实例

从 API 接收数据并将其分配给模型的问题

使用 Storyboards 处理未知深度的 UITableView 的最佳方法

Django迁移无法将用户实例分配给用户字段