通过属性在UIViewController和UIView之间传递数据是nil?

时间:2017-01-09 07:29:48

标签: ios objective-c uiview uiviewcontroller

我正在尝试将数据从 UIViewController 传递到 UIView 。这是我的代码的一部分: 在我的 UIViewController.m 中,我定义了一个 scrollview

@property(nonatomic, strong)DetailScrollView *scrollView;

- (DetailScrollView *)scrollView{
if (!_scrollView) {
    DetailScrollView *scrollView = [[DetailScrollView alloc] init];
    _scrollView = scrollView;
}
return _scrollView;
}

- (void)viewDidLoad {
  [super viewDidLoad];
  [self.view addSubview:self.scrollView];
  self.scrollView.product = self.product;
}

我在这里添加了一个断点。它确实得到了产品值。但在我的 DetailScrollView.m 文件中,产品值为零。 的 DetailScrollView.h

@property(nonatomic, strong)Product *product;

DetailScrollView.m

- (instancetype)initWithFrame:(CGRect)frame{
     //get the value of self.product was nil
}

任何人都可以帮助我?

1 个答案:

答案 0 :(得分:3)

据我了解,您希望在product的初始值设定项中使用DetailScrollView。除非你在初始化时通过它,否则你不会得到它。 E.g。

- (DetailScrollView *)scrollView{

    if (!_scrollView) {
        DetailScrollView *scrollView = [[DetailScrollView alloc] initWithProduct:self.product];
        _scrollView = scrollView;
    }

    return _scrollView;
}

然后在初始化商店中将其作为属性:

- (instancetype)initWithProduct:(Product *)product {
    self = [super initWithFrame:<#someDefaultFrame#>];
    self.product = product;
}