簡體   English   中英

對模態ViewController被解雇做出反應

[英]React on Modal ViewController being dismissed

我有三個ViewController和一個導航控制器。 導航堆棧為:
NavigationController-推> VC1,推> VC2。 VC1可以以代碼形式形式呈現VC3。 它沒有通過segues連接。
VC1-“您當前的項目”
VC2-“您的項目的詳細信息”
VC3-“創建新項目”

當用戶希望創建一個新項目時,我使用以下命令放置了VC3:

- (IBAction)newProjectButton:(id)sender {
    NewProjectViewController *newProject = [[NewProjectViewController alloc] init];
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:newProject];
    [self presentViewController:navController animated:YES completion:nil];
}

我用戶按下“取消”按鈕,我使用此代碼:

- (IBAction)cancelButton:(id)sender {
    [self dismissViewControllerAnimated:YES completion:nil];
}

當用戶按下“完成”按鈕時,我希望VC1切換到VC2並顯示新項目的屬性。 我希望用戶無法看到此序列,因此,他只看到以下事件鏈:
按下按鈕“添加”->模態VC出現->按下“完成”->模態VC消失並且VC3已經顯示。

我要問的是如何告訴VC1用戶按下了“完成”按鈕? 這里可以委托嗎? 如何執行呢? 謝謝。

您應該創建一個委托協議,該協議允許模態視圖控制器向其創建者發送通知。

@protocol ModalViewControllerDelegate
@optional
- (void)modalViewControllerDidCancel:(ModalViewController *)vc;
- (BOOL)modalViewControllerShouldSave:(ModalViewController *)vc;
@end

然后,在ModalViewController定義一個新屬性。 weak很重要,因為您不想有任何保留周期。

@property (nonatomic, weak) id <ModalViewControllerDelegate> delegate;

在關閉或保存之前,只需檢查委托是否已實現方法(通過-respondsToSelector:並發送適當的回調。 創建模態視圖控制器時,請不要忘記設置委托屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM