我已实施自定义提醒视图,delegate
方法如下:
#import <UIKit/UIKit.h>
@class MyAlertViewController;
@protocol MyAlertViewControllerDelegate <NSObject>
@required
-(void) alertViewControllerClickedPrimaryButton:(MyAlertViewController *)alertViewController;
@optional
-(void) alertViewControllerClickedSecondaryButton:(MyAlertViewController *)alertViewController;
@end
我在许多视图控制器中调用了这些委托方法。另外,我创建了一个SharedViewController
,我将它用于所有ViewControllers
可以说,其中一个委托方法是从MasterViewController
调用的,它继承了SharedViewController
,我将在SharedViewController
中使用此方法:
#pragma mark My Alert Delegate
-(void) alertViewControllerClickedPrimaryButton:(MyAlertViewController *)alertViewController{
//here how would I know that this alert is presented from MasterViewController ?
}
如果我[self class]
,我会将其命名为SharedViewController
。
从MasterViewController
调用SharedViewController
方法时,如何在delegate
{{}}}中获取MAsterVIewController
的名称?
编辑:我在委托方法中添加了一个名为UIViewController
的参数,现在它看起来像这样:
-(void) alertViewControllerClickedSecondaryButton:(MyAlertViewController *)alertViewController :(UIViewController *)controllerName;
以及需要作为controllerName发送给委托的内容是什么?
我有这一行来调用委托方法:
[_delegate alertViewControllerClickedSecondaryButton:self ]; //previous call
我将其更改为:
[_delegate alertViewControllerClickedSecondaryButton:self :<#(UIViewController *)#>]; // I have no idea which parameter to pass in here
任何想法?
答案 0 :(得分:0)
〜编辑〜
MasterViewController
最后,勾选“使用故事板ID”框√
现在,在将自定义AlertVC呈现到导航堆栈后的警报委托方法中:
-(void) alertViewControllerClickedPrimaryButton:(MyAlertController *)alertViewController
{
/* ... all other code
...
...
*/
// Print the name of the Presenting View Controller
NSLog(@"Presenting ViewController = %@", self.presentingViewController.restorationIdentifier);
}