由于iOS9中警报视图的弃用,我很难通过NSObject类显示警报 因为在UIAlertView中有一种方法可以显示警告[objaler show];但在iOS 9中显示警报 我们必须使用presentViewController,这样任何人都可以告诉我如何在nsobject类中显示警报视图控制器。
我想在NSObject类中调用的代码如下:
UIAlertController *alert= [UIAlertController
alertControllerWithTitle:@"Login"
message:@"Enter your credentials here"
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction* ok = [UIAlertAction actionWithTitle:@"Done" style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action){
//Do Some action here
}];
UIAlertAction* cancel = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action) {
NSLog(@"cancel btn");
[alert dismissViewControllerAnimated:YES completion:nil];
}];
[alert addAction:ok];
[alert addAction:cancel];
[self presentViewController:alert animated:YES completion:nil];
}
我的问题是我想在NSObject类中调用它。 怎么做?
答案 0 :(得分:2)
试试这个:
您的ObjectClassName.h类
#import <UIKit/UIKit.h>
+ (void)showAlertTitle:(NSString *)title withMessage:(NSString *)message onView:(UIViewController *)viewController;
您的ObjectClassName.m类
+ (void)showAlertTitle:(NSString *)title withMessage:(NSString *)message onView:(UIViewController *)viewController
{
UIAlertController * alert= [UIAlertController
alertControllerWithTitle:title
message:message
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction* okButton = [UIAlertAction
actionWithTitle:@"OK"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action)
{
//Handel your yes please button action here
[alert dismissViewControllerAnimated:YES completion:nil];
}];
[alert addAction:okButton];
[viewController presentViewController:alert animated:YES completion:nil];
}
当您调用导入对象类时:
#import "ObjectClassName.h";
[ObjectClassName showAlertTitle:@"Alert" withMessage:@"Alert Message" onView:self];
答案 1 :(得分:0)
这就是重点 - 苹果告诉你,你可能不应该这样做。
在这种情况下,您可以做的最好的事情是浏览视图控制器的层次结构(从UIWindow
的{{1}}开始),并至少将其显示在顶级控制器上。
您可以做的最好的事情就是直接在适当的视图控制器中调用此类警报。
答案 2 :(得分:0)
类方法
不会调用您的警报视图+(void)initialize but by the instance -(id)init method
这就是您的实例没有收到通知的原因
类方法&#34; +(void)initialize&#34; 在类首次加载时被调用。
实例方法&#34 ;-(id)init&#34; 的名称以init开头,并在您创建(实例化)对象时调用。
-(id)init { //alert view self = [super init]; return self; }