2016-11-07 1 views
1

In meiner App verwendet UIAlertController viel Zeit.So, erstelle ich NSObjectHelper. HierUIAlertController mehrmals mit NSObject wiederverwenden

ist Helper.h

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

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

Hier ist 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 

Diese Linie kann nicht laufen in Helper: [self presentViewController:alert animated:YES completion:nil]; wegen presentViewController. Bitte helfen Sie mir

+0

Sie bedeutete Sie es von Helfer zeigen, müssen aber Sie haben keinen Viewcontroller zum Präsentieren? – Tj3n

+0

Ja, das ist es. Ich habe keine Lösung dafür. Ich bin Neuling – Rin

Antwort

4

Sie erhalten diesen Fehler, weil die Basisklasse NSObject und self das Objekt dieser Klasse darstellen und NSObject hat keine Methode namens presentViewController.

es zu beheben Sie benötigen ein Objekt von UIViewController in dieser Methode zu übergeben und an diesem Objekt Verwendung presentViewController wie diese

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

Und wie diese diese

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

Probieren, während die Controller wird geschoben und präsentiert.

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

der Teig Weg c-Funktion in @end der Klasse erstellen NSObject

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

und rufen Sie in jeder Klasse wie dieses

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

Ich habe 'UIAlertView' und' UIAlertController'. 'UIAlertView' nicht zu über iOS 9.0 verwenden. – Rin