2017-01-09 6 views
0

私は自分のコードのUIViewの .Hereの一部にのUIViewControllerからデータを渡すにしようとしています:私のUIViewController.mで 、私はブレークポイントを追加プロパティによるUIViewControllerとUIView間のデータの受け渡しはnilですか?

@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; 
} 

scrollviewを定義しますここに私は製品価値を得ている。しかし、私のDetailScrollView.mファイルでは、製品価値はゼロだった。 DetailScrollView.h

@property(nonatomic, strong)Product *product; 

DetailScrollView.m

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

誰もが私を助けることができますか?

+0

それは結構ですが、どこuはscrollviewを初期化していますか? –

+0

@AndeySatyanarayana私は初期化メソッドを使用します –

+0

あなたはスクロールビューから製品を取得していないことをどのように知っていましたか?あなたはどこにログしましたか? viewDidLoad? viewDidAppear? – Joshua

答えて

3

私が理解しているように、あなたのDetailScrollViewのイニシャライザにはproductが必要です。あなたがそれを初期化するときに渡さない限り、あなたはそれを取得しません。例えば。

プロパティとして初期化子ストアそれでその後
- (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; 
} 
+0

scrollViewのinitWithFrameメソッドで商品を渡すことはできますか? –

+0

'initWithFrame:'は任意の 'UIView'のイニシャライザです。したがって、あなたはプロダクトの初期設定を行い、そこから' initWithFrame: 'をいくつかのデフォルトフレームを定義することで呼び出すことができます。提供された例のように。 – Eimantas

+0

OK。ありがとう!:) –

関連する問題