[英]Delegate not called after dismissing controller
我有一個控制器A,並且有一個UIButton,單擊時會顯示一個新的控制器B。但是問題是控制器B首先嵌入了NAV。 所以最終我將介紹UINavigationController。
現在,控制器B中有一個UIButton,控制器將在該UIButton上關閉,並應在控制器A上傳遞一些消息,並傳遞一個委托
控制器A UIButtonCode
- (IBAction)summaryButtonClick:(id)sender {
UIStoryboard* storyBoard=[UIStoryboard storyboardWithName:@"Main" bundle:nil];
UINavigationController* summaryVC=[storyBoard instantiateViewControllerWithIdentifier:@"SummaryNavVC"];
[self presentViewController:summaryVC animated:YES completion:nil];
summaryVC=nil;
}
現在控制器B .h文件
#import <UIKit/UIKit.h>
@protocol SummaryViewWhatsNewDelegate <NSObject>
@required
- (void) SummaryViewWhatsNew:(NSString*)title;
@end
@interface SummaryViewController :
UIViewController<UITableViewDataSource,UITableViewDelegate>
{
id <SummaryViewWhatsNewDelegate> _delegate;
}
@property (nonatomic,strong) id delegate;
@property (weak, nonatomic) IBOutlet UITableView *summaryTableView;
- (IBAction)closeSummaryView:(id)sender;
@end
.m
//Button Click
[self dismissViewControllerAnimated:YES completion:^{
[_delegate SummaryViewWhatsNew:@"Sales Triggers Filter"];
}];
我已經在Controller A .h中實現了委托的實現
@interface ControllerA : UIViewController<SummaryViewWhatsNewDelegate>
控制器A的.m
#pragma mark -ControllerB Delegate
-(void)SummaryViewWhatsNew:(NSString *)title{
NSLog(@"Delegate Called");
}
在這種情況下,我知道在介紹NAV控制器而不是Controller B時,我沒有提供proxy.self部分。
因此,我在viewDidLoad和Controller * B中創建了一個對象,並將委托設置為self。 但這是行不通的,永遠不會調用委托
另一方面,如果我僅在沒有導航的情況下展示Cntroller B,並且在展示前我保留b.delegate = self,它就可以工作。
另一個替代方案可以是觸發通知。 但是我想和代表們一起工作。
因此,有什么方法可以調用由Nav嵌入的所呈現視圖控制器的委托。 任何幫助將不勝感激。
好吧,我得到了答案,我們必須從NAV獲取Controller對象
在我要演示的地方,我只需要添加這些行即可
UIStoryboard* storyBoard=[UIStoryboard storyboardWithName:@"Main" bundle:nil];
UINavigationController* summaryVC=[storyBoard instantiateViewControllerWithIdentifier:@"SummaryNavVC"];
//Add These lines in order to get the object of Controller B.
// SummaryViewController is my Controller B
SummaryViewController* summary=[[summaryVC viewControllers] objectAtIndex:0];
summary.delegate=self;
[self presentViewController:summaryVC animated:YES completion:nil];
而且有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.