2016-11-07 11 views
1

私のアプリでは、UIAlertControllerは多くの時間を使います。NSObjectヘルパーを作成します。ここでUIAlertController NSObjectで何度も再利用

ここHelper.h

#import <Foundation/Foundation.h> 
#import "PrefixHeader.pch" 
#import "LectureViewController.h" 

@interface Helper : NSObject 
+(void) showNotice:(NSString *) message; 
+(void) showNoticeWithAction; 
@end 

あるHelper.m

#import "Helper.h" 
#import "AppDelegate.h" 
@implementation Helper 


+(void) showNotice:(NSString *) message{ 
    NSArray *versionArray = [[[UIDevice currentDevice] systemVersion] componentsSeparatedByString:@"."]; 
    if ([[versionArray objectAtIndex:0] intValue] >= 9) { 

     //ver.IOS >= 9 
     UIAlertController* alert = [UIAlertController alertControllerWithTitle:nil 
                     message:message 
                   preferredStyle:UIAlertControllerStyleAlert]; 

     alert.view.backgroundColor = [UIColor grayColor]; 
//  [self presentViewController:alert animated:YES completion:nil]; 
     dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 

      [alert dismissViewControllerAnimated:YES completion:^{ 

      }]; 

     }); 

    } else { 
     //ver.IOS < 9 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:message delegate:nil cancelButtonTitle:nil otherButtonTitles:nil, nil]; 
     [alert performSelector:@selector(show) withObject:nil afterDelay:5]; 
    } 

} 

@end 

は、この行は、ヘルパーで実行カントですのでpresentViewController[self presentViewController:alert animated:YES completion:nil];。助けてください

+0

などの任意のクラスで呼び出すが、あなたはビューコントローラをプレゼントする必要はありませんか? – Tj3n

+0

はい、そうです。私はそれのための解決策を持っていない。私は初心者です – Rin

答えて

4

基本クラスがNSObjectで、selfがそのクラスのオブジェクトを表し、NSObjectがpresentViewControllerというメソッドを持っていないため、このエラーが発生しています。

はあなたのコントローラ間、これを試してみてください。この

+(void) showNotice:(NSString *) message andViewController : (UIViewController *) controller; 

ようpresentViewControllerその方法では、そのオブジェクトの使用上のUIViewControllerのオブジェクトを渡すと、この

[controller presentViewController:alert animated:YES completion:nil]; 
0

ようにそれを使用する必要があり、それを解決するために、押されて提示される。

UIViewController *vc = [[[[UIApplication sharedApplication] delegate] window] rootViewController]; 
[[vc presentedViewController] ? vc.presentedViewController : vc presentViewController:alert animated:YES completion:nil]; 
0

打者の方法は、クラスNSObjectの

void showAlertView(NSString *title,NSString *message) { 
    [[[UIAlertController alloc]initWithTitle:title message:message delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles: nil] show]; 
} 

の@endでC関数を作成して、あなたはヘルパーからそれを表示する必要があるもので、この

showAlertView(@"Done", [NSString stringWithFormat:@"%@",responseObject[@"message"]]); 
+0

私は 'UIAlertView'と' UIAlertController'を持っています。 'UIAlertView'はiOS 9.0以上では使用しません。 – Rin

関連する問題