我无法完成将NSArray
从父UIViewController
传递到子视图UIView
的简单任务。
这是一些代码......
我声明了我的子视图(UIView
的子类)。然后在故事板初始化时在视图控制器中,将我的数组传递给我的子视图。我记录了数组,控制台告诉我(null)
。
ParentViewController.h
@property (nonatomic, strong) IBOutlet APColumnTableView *tableView;
ParentViewController.m
-(id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self)
{
NSArray *array = [NSArray arrayWithObjects:@"1", @"2", @"3", @"4", nil];
[_tableView setColumnTitles:array];
NSLog(@"%@", _tableView.columnTitles);
}
return self;
}
我在故事板UIView
中添加了UIViewController
,设置了子类并连接了IBOutlet
。我已经宣布了columnTitles
NSArray
。
APColumnTableView.h(我的子视图子类)
@property (nonatomic, strong) NSArray *columnTitles;
然后在.m文件中,我再次记录数组以查看控制台吐出的内容,仍为(null)
。
APColumnTableView.m
-(void)awakeFromNib
{
//Intialisation here...
NSLog(@"%@", self.columnTitles);
}
我哪里错了?!我只想简单地将NSArray
从我的UIViewController
传递到其子视图。
答案 0 :(得分:2)
您的所有商店都不会在initWithCoder:
中设置。使用awakeFromNib
或viewDidLoad
传递数组。如果您在_tableView
中记录initWithCoder:
,则可能是nil
。
答案 1 :(得分:0)
当为ParentViewController调用initWithCoder时,无法保证_tableView已存在。换句话说,只有在awakeFromNib中才能确保所有视图都存在并被占用。
因此,将您的代码从initWithCoder移动到ParentViewController中的awakeFromNib,一切都应该没问题。
答案 2 :(得分:0)
我记得在initWithCoder中你的视图还没有创建(所以_tableView是nil)。尝试在viewDidLoad中执行此操作。