Rin Rin - 1 year ago 100
iOS Question

UIAlertController reuse more times with NSObject

In my app, UIAlertController uses much time.So, I create


Here is Helper.h

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

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

Here is 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

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];



This line cant run in Helper:
[self presentViewController:alert animated:YES completion:nil];
because of
. Please help me

Answer Source

You are getting this error because the base class is NSObject and self represent the object of that class and NSObject does'nt have any method named presentViewController.

To resolve it you need to pass an object of UIViewController in that method and on that object use presentViewController like this

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

And use it like this

 [controller presentViewController:alert animated:YES completion:nil];
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download