i having weird problem following code:
#import "mainapplicationviewcontroller.h" #import "passwordscreenviewcontroller.h" @implementation mainapplicationviewcontroller // designated initializer. override if create controller programmatically , want perform customization not appropriate viewdidload. /* - (id)initwithnibname:(nsstring *)nibnameornil bundle:(nsbundle *)nibbundleornil { self = [super initwithnibname:nibnameornil bundle:nibbundleornil]; if (self) { // custom initialization. } return self; } */ // implement viewdidload additional setup after loading view, typically nib. - (void)viewdidload { [super viewdidload]; if([[nsuserdefaults standarduserdefaults] boolforkey:@"apphasbeenlaunchedbefore"] == no){ uialertview *firstlaunch = [[uialertview alloc] initwithtitle:@"set password." message:@"this first time launch app. set password now?" delegate:self cancelbuttontitle:@"no" otherbuttontitles:@"yes", nil]; [firstlaunch show]; [firstlaunch release]; } } /* // override allow orientations other default portrait orientation. - (bool)shouldautorotatetointerfaceorientation:(uiinterfaceorientation)interfaceorientation { // return yes supported orientations. return (interfaceorientation == uiinterfaceorientationportrait); } */ #pragma mark - #pragma mark uialertviewdelegate methods - (void)alertview:(uialertview *)alertview diddismisswithbuttonindex:(nsinteger)buttonindex { //no = 0. yes = 1. if(buttonindex == 1) { passwordscreenviewcontroller *psvc = [[passwordscreenviewcontroller alloc] init]; [self presentmodalviewcontroller:psvc animated:no]; } } #pragma mark - #pragma mark memory management - (void)didreceivememorywarning { // releases view if doesn't have superview. [super didreceivememorywarning]; // release cached data, images, etc. aren't in use. } - (void)viewdidunload { [super viewdidunload]; // release retained subviews of main view. // e.g. self.myoutlet = nil; } - (void)dealloc { [super dealloc]; } @end go "uialertviewdelegate methods pragma mark.
for reason, following message in console whenever try show modal view:
coreanimation: ignoring exception: * -[nsplaceholderstring initwithstring:]: nil argument
which makes no sense. see no reason pass nil argument, specially since there no particular possible cause prevent object being created. have googled crazy in last few days , have never seen particular problem. if has idea fix it, please let me know, out of ideas, don't know else try, , makes no sense.
things have tried far:
- loadwithnibname:
- try show modal view without calling alertview @ all.
edit:
passwordscreenview implementation:
// // passwordscreenviewcontroller.m // // created on 4/23/11. // copyright 2011 . rights reserved. // #import "passwordscreenviewcontroller.h" #import <security/security.h> #import "sfhfkeychainutils.h" @implementation passwordscreenviewcontroller @synthesize p1, p2, p3, p4; @synthesize vp1, vp2, vp3, vp4; @synthesize delegate; // implement viewdidload additional setup after loading view, typically nib. - (void)viewdidload { [super viewdidload]; p1.text = @" "; p2.text = @" "; p3.text = @" "; p4.text = @" "; vp1.text = nil; vp2.text = nil; vp3.text = nil; vp4.text = nil; nserror *error; currentpassword = [nsstring stringwithstring:[sfhfkeychainutils getpasswordforusername:@"user" andservicename:@"com.atanacross.myprincesses.password" error:&error]]; newpassword = [nsstring stringwithstring:nil]; repeatnewpassword = [nsstring stringwithstring:nil]; [p1 becomefirstresponder]; } -(id)initwithmode:(nsstring *)mode { self = [super init]; return self; } #pragma mark - #pragma mark uitextfielddelegate methods -(bool)textfield:(uitextfield *)textfield shouldchangecharactersinrange:(nsrange)range replacementstring:(nsstring *)string { if(range.length != 1) { if(textfield == p1) { p1.text = string; vp1.text = string; [p2 becomefirstresponder]; }else if(textfield == p2) { p2.text = string; vp2.text = string; [p3 becomefirstresponder]; }else if(textfield == p3) { p3.text = string; vp3.text = string; [p4 becomefirstresponder]; }else if(textfield == p4) { p4.text = string; vp4.text = string; } }else { if(textfield == p4) { p4.text = @" "; vp4.text = nil; [p3 becomefirstresponder]; }else if(textfield == p3) { p3.text = @" "; vp3.text = nil; [p2 becomefirstresponder]; }else if(textfield == p2) { p2.text = @" "; vp2.text = nil; [p1 becomefirstresponder]; }else if(textfield == p1) { p1.text = @" "; vp1.text = nil; } } return no; } -(bool)textfieldshouldbeginediting:(uitextfield *)textfield { if(textfield == vp1 || textfield == vp2 || textfield == vp3 || textfield == vp4) { return no; } return yes; } #pragma mark - #pragma mark memory management - (void)didreceivememorywarning { // releases view if doesn't have superview. [super didreceivememorywarning]; // release cached data, images, etc. aren't in use. } - (void)viewdidunload { [super viewdidunload]; // release retained subviews of main view. // e.g. self.myoutlet = nil; self.p1 = nil; self.p2 = nil; self.p3 = nil; self.p4 = nil; self.vp1 = nil; self.vp2 = nil; self.vp3 = nil; self.vp4 = nil; } - (void)dealloc { [p1 release]; [p2 release]; [p3 release]; [p4 release]; [vp1 release]; [vp2 release]; [vp3 release]; [vp4 release]; [super dealloc]; } @end
newpassword = [nsstring stringwithstring:nil]; repeatnewpassword = [nsstring stringwithstring:nil]; this you're looking for. try initializing newpassword = nil or newpassword = @"".
Comments
Post a Comment