我一直期待在視圖控制器幾天現在(搜索Xcode的幫助下,谷歌和堆棧溢出),我想我對此有所瞭解,但不是很多。 我有一些代碼,我無法理解。 所以在這裏,我在我正在閱讀的書中找到以下代碼,並且我不確定如果我理解正確。諒解/澄清視圖控制器語法
-(void)prepareForSegue(UIStoryboardsegue *)segue sender:(id)sender{
((ViewController2 *)segue.destinationViewController).delegate = self;
}
首先,我不知道爲什麼我們在這裏對我們的第二個視圖控制器(viewController2)進行了類型轉換。 我覺得我得到了休息,雖然,我們採取的方法的SEGUE參數(持有約在SEGUE涉及的視圖控制器信息),我們訪問destinationViewController(意思是我們要訪問的是我們要視圖控制器) 。然後,我們將目標視圖控制器的委託屬性設置爲self。我相信我們將委託屬性設置爲self,因爲我們想要將消息發送給我們將要使用的視圖控制器中的委託。
繼承人的最後一個我不明白:
在頭文件:
@property (weak, nonatomic)id delegate;
在實現文件:(該controllerVisisble屬性是一個布爾值,並更改爲YES時,用戶點擊一個按鈕來執行手動SEGUE到第二視圖控制器,這是此一)
-(void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
((ViewController *)self.delegate).controllerrVisisble=NO;
}
下面有什麼,我認爲這樣做:在viewWillDisappear方法被稱爲磨片n視圖正在關閉/刪除。
我對[super viewWillDisappear:animated]不太確定,但是我猜測它在視圖消失時會給出動畫嗎?但是,我刪除了該行,並且我的dismissViewControllerAnimated方法仍然在視圖控制器被解僱。
這裏是真正讓我困惑的部分。我們需要以某種方式訪問第一個視圖控制器的dateChooserVisible屬性,將其設置爲NO,因此我們可以通過我們的按鈕再次訪問第二個視圖控制器。但是,我不明白爲什麼我們必須使用類型轉換(viewController *),然後輸入self.delegate。我也不明白爲什麼我們在頭文件中創建了一個名爲delegate的屬性,在這裏使用。
因爲編譯器只知道目標控制器是一個通用視圖控制器,所以你必須告訴它是一個特定的自定義類。然後,您可以分配在segue期間在控制器之間傳遞數據引用所需的屬性。 – timquinn
好點,我錯過了那一個,我只看到了'(ViewController *)self'位。 – aopsfan