如何获取呈现自定义AlertView的UIViewController的名称?

时间:2015-08-11 14:57:14

标签: ios objective-c delegates

我已实施自定义提醒视图,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

任何想法?

1 个答案:

答案 0 :(得分:0)

编辑

  1. 选择故事板文件
  2. 选择MasterViewController
  3. Utilities 中选择 Identity Inspector
  4. 确保所选的班级为MasterViewController
  5. Storyboard ID 文本框中的自定义类区域下方为其指定一个自定义名称
  6. 最后,勾选“使用故事板ID”框√

    • 对SharedViewController执行相同操作 (以及您可能展示alertviewcontroller的任何其他VC)
  7. 现在,在将自定义AlertVC呈现到导航堆栈后的警报委托方法中:

    -(void) alertViewControllerClickedPrimaryButton:(MyAlertController *)alertViewController 
    {
    /*  ... all other code
        ... 
        ... 
    */
        // Print the name of the Presenting View Controller
        NSLog(@"Presenting ViewController = %@", self.presentingViewController.restorationIdentifier);
    }