Bhanu Prakash
Bhanu Prakash

Reputation: 1483

UIAlertView crashes in iOS7

We had compiled and deployed an app in iOS 6 environment. But, now the app is getting crash in iOS 7 whenever showing an alert. App simply getting crash in [alertView show];

But, the same app is running perfect in iOS 6.

Code for showing alert

-(void)displayAlertWithMessage:(NSString *)message withTitle:(NSString *)title andTag:(int)tag
{
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:title message:message delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alertView show];
}

and calling like this

[self displayAlertWithMessage:@"Please enter valid username!" withTitle:nil andTag:1];

Here, is the crash log.

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </Users/developer/Library/Application Support/iPhone Simulator/7.0/Applications/A0BCB945-8E4A-4D06-BEE8-240FF45ECF78/MyProject.app> (loaded)' with name '_UIModalItemAppViewController''
*** First throw call stack:
(
    0   CoreFoundation                      0x003176f4 __exceptionPreprocess + 180
    1   libobjc.A.dylib                     0x027c88b6 objc_exception_throw + 44
    2   CoreFoundation                      0x003174cb +[NSException raise:format:] + 139
    3   UIKit                               0x015d1bec -[UINib instantiateWithOwner:options:] + 951
    4   UIKit                               0x01444f05 -[UIViewController _loadViewFromNibNamed:bundle:] + 280
    5   UIKit                               0x014456ad -[UIViewController loadView] + 302
    6   UIKit                               0x014459ae -[UIViewController loadViewIfRequired] + 78
    7   UIKit                               0x01445eb4 -[UIViewController view] + 35
    8   UIKit                               0x018dc9da -[_UIModalItemsCoordinator _presentingViewControllerForAlertCompatibilityCreateIfNeeded:] + 248
    9   UIKit                               0x018dc8dd -[_UIModalItemsCoordinator _presentingViewControllerForAlertCompatibility] + 41
    10  UIKit                               0x01812801 -[UIAlertView(Private) popupAlertAnimated:animationType:atOffset:] + 382
    11  UIKit                               0x01812c1d -[UIAlertView(Private) popupAlertAnimated:animationType:] + 56
    12  UIKit                               0x01817c17 -[UIAlertView showWithAnimationType:] + 48
    13  UIKit                               0x01817c45 -[UIAlertView show] + 41
    14  MyProject                        0x000330a8 -[LoginViewController displayAlertWithMessage:withTitle:andTag:] + 232
    15  MyProject                        0x00032e8b -[LoginViewController isValidContent] + 299
    16  MyProject                        0x00033136 -[LoginViewController showSetPinView] + 54
    17  libobjc.A.dylib                     0x027da874 -[NSObject performSelector:withObject:withObject:] + 77
    18  UIKit                               0x0133524c -[UIApplication sendAction:to:from:forEvent:] + 108
    19  UIKit                               0x013351d8 -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 61
    20  UIKit                               0x0142ba5d -[UIControl sendAction:to:forEvent:] + 66
    21  UIKit                               0x0142be20 -[UIControl _sendActionsForEvents:withEvent:] + 577
    22  UIKit                               0x0142b0cf -[UIControl touchesEnded:withEvent:] + 641
    23  UIKit                               0x0137221d -[UIWindow _sendTouchesForEvent:] + 852
    24  UIKit                               0x01372e84 -[UIWindow sendEvent:] + 1232
    25  UIKit                               0x01346b86 -[UIApplication sendEvent:] + 242
    26  MyProject                        0x000c2c75 -[Application sendEvent:] + 101
    27  UIKit                               0x0133135f _UIApplicationHandleEventQueue + 11421
    28  CoreFoundation                      0x002a096f __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15
    29  CoreFoundation                      0x002a02fb __CFRunLoopDoSources0 + 235
    30  CoreFoundation                      0x002bd3ce __CFRunLoopRun + 910
    31  CoreFoundation                      0x002bcbf3 CFRunLoopRunSpecific + 467
    32  CoreFoundation                      0x002bca0b CFRunLoopRunInMode + 123
    33  GraphicsServices                    0x036f0a27 GSEventRunModal + 192
    34  GraphicsServices                    0x036f084e GSEventRun + 104
    35  UIKit                               0x01333f0b UIApplicationMain + 1225
    36  MyProject                        0x00006612 main + 178
    37  MyProject                        0x00006555 start + 53
)
libc++abi.dylib: terminating with uncaught exception of type NSException

Thanks in advance.

Upvotes: 2

Views: 2328

Answers (2)

Bhanu Prakash
Bhanu Prakash

Reputation: 1483

As per crash log it says to me "[UIViewController _loadViewFromNibNamed:bundle:]" unable to load nib file.

But, in my project I had created a category for UIViewController class and overridden the -(id)init method. Upto ios6, while showing an alert this category method is not at all executing, but from ios7 onwards overridden init() method of UIViewController.

So, I fixed this issue by adding the another validation in UIViewController category's init() method for checking the class method is UIAlertView or not, if it is UIAlertView then simply calling [super init]; instead of doing my other stuff relating to view controllers.

Sample code:

    - (id)init
    {
          NSString *viewControllerName = [NSString stringWithFormat:@"%@",[self class]];
          if([viewControllerName isEqualToString:@"UIAlertView"])
          {
             self = [super init];
          }
          else
          {
             // my stuff
          }
          return self;
    }

Upvotes: 2

Rock
Rock

Reputation: 1

you can test it.. try to avoid nil.. instead of that put something... like [self displayAlertWithMessage:@"Please enter valid username!" withTitle:@"Hello" andTag:1]

and you need to release alert view so in function write release code...

Upvotes: -1

Related Questions