2014-02-14 60 views
0

我有兩個ViewController之間的一個segue問題,當我嘗試登錄segue.destinationViewController.scrollView它是NIL,在我的情況下,這是問題,因爲我需要該scrollView在此時可用。 -prepareForSegue:senderUIScrollView不存在於segue

第一碼塊是我的-prepareForSegue:sender:方法的基本表示。第二個代碼塊是我發現做我想做的,但不是我想要的方式方法。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
     ViewController *viewController = (ViewController *)[segue destinationViewController]; 
     viewController.questions = selectedIndexArray; 
     NSLog(@"scrollView: %@", [viewController scrollView]); // this is logged as nil 
} 

-

但是,如果我從-setQuestions:方法日誌scrollView財產在ViewController它再次NIL,直到我做延遲執行:

double delayInSeconds = 0.1; 
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)); 
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 
    NSLog(@"scrollView: %@", _scrollView); // returns object address and description 
}); 

我不喜歡dispatch_after方法,因爲100毫秒的延遲很明顯,我寧願跳過它。

因此,如何在一開始提供scrollView財產,在prepareForSegue:sender:回到那裏?

+0

是滾動視圖視圖控制器的公共財產? – Nick

回答

0

我只是提出我的代碼,這個例子:

NSLog(@"scrollView: %@", _scrollView); 

-viewDidLoad方法ViewController