我的故事板中有三個viewController,每個視圖都有三個viewController類。從我的主視圖控制器,我打開一個'模態'型的segue導航視圖控制器,這是一個多步驟的形式,它有兩個視圖。當用戶在最後一個(這是第二個)視圖中點擊'完成'時,該模式被解散並且用戶返回到主屏幕。通過視圖控制器將代理傳遞給視圖控制器
我正在與代表這樣做。並且完成按鈕的代碼也位於委託中,並放置在主viewController的實現文件中。在實現這個時,我將主視圖中的委託傳遞給導航的第一個視圖,然後從第一個視圖點擊'next'後,我將委託傳遞給第二個(最後一個)視圖(它具有完成按鈕)。
從主委託的傳遞到導航的第一頁是這樣的:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"CreateCast"])
{
UINavigationController *navigationController = segue.destinationViewController;
CreateCastStepOneVC *createCastStepOneVC = [[navigationController viewControllers] objectAtIndex:0];
createCastStepOneVC.delegate = self;
}
}
代表從導航的第一視圖第二視圖傳球是這樣的:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"ToCastStepTwo"])
{
CreateCastStepTwoVC *createCastStepTwoVC =
segue.destinationViewController;
createCastStepTwoVC.delegate = delegate;
}
}
事情完成好,代表正按要求開展工作。但警告彈出這是一個問題:
過客「_weak ID」到 不兼容的類型「ID」
財產申報在第一導航視圖的參數是這樣的:
@property (nonatomic, weak) id <CreateCastStepOneVCDelegate> delegate;
屬性聲明第二導航視圖是這樣的:
@property (nonatomic, weak) id <CreateCastStepTwoVCDelegate> delegate;
這種通過視圖控制器傳遞委託的方式甚至推薦?或者還有其他更好的方法嗎? – Firdous 2012-02-24 11:17:55
我看不出沒有理由不使用代表來做到這一點。那個siad,我沒有在segues的storyboard上工作太多,所以我不完全熟悉那裏的最佳實踐。 – 2012-02-24 11:34:19