我已经创建了一个按钮并在运行时添加了其操作。整个视图在运行时创建。 在点击时调用动作saveUserProfileSetting
会导致应用程序崩溃"NSInvalidArgument: Unrecornized selector sent to a instance
。当代码出现在 其他课程中时,它工作正常。我试图为它创建一个新类,它崩溃了。按钮上的应用程序崩溃单击操作iOS
@interface LASplashViewer : NSObject
+(void) showSplashScreen;
+(void) dismissSplashScreen;
@end
(void) showSplashScreen
{
UIView *mainScreen = [[[UIApplication sharedApplication]delegate]window];
UIView *windowBlocker = [[UIView alloc]initWithFrame:mainScreen.frame];
windowBlocker.tag = 999;
windowBlocker.backgroundColor = [UIColor clearColor];
UIButton *saveButton = [[UIButton alloc]initWithFrame:CGRectMake(200, 430, 420, 30)];
[saveButton setTitle:@"Save" forState:UIControlStateNormal];
[saveButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[saveButton addTarget:self action:@selector(saveUserProfileSetting) forControlEvents:UIControlEventTouchUpInside];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(165, 200, 450, 480)];
imageView.layer.cornerRadius=10;
imageView.layer.masksToBounds = YES;
[windowBlocker addSubview:imageView];
[imageView addSubview:saveButton];
imageView.userInteractionEnabled = true;
[mainScreen addSubview:windowBlocker];
}
-(void) saveUserProfileSetting
{
// TODO: if validation is successful save the below data. and dismiss the splash screen.
NSUserDefaults *userSettings = [[NSUserDefaults alloc] init];
[userSettings setObject:fullName.text forKey:@"name_pref"];
NSLog(@"%@fullname" , fullName);
[userSettings setObject:jobTitle.text forKey:@"title_pref"];
[userSettings setObject:streetName.text forKey:@"street_name_pref"];
[userSettings setObject:suburbs.text forKey:@"suburb_pref"];
[userSettings setObject:postCode.text forKey:@"postcode_pref"];
[userSettings setObject:phoneNum.text forKey:@"phone_no_pref"];
[userSettings setObject:fax.text forKey:@"fax_pref"];
[userSettings setObject:mobileNumber.text forKey:@"mobile_no_pref"];
[userSettings setObject:email.text forKey:@"email_pref"];
[userSettings synchronize];
}
调用方法是显示在另一个 类 - // HomeViewController。
(void)viewDidLoad
{
[super viewDidLoad];
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"isFirstLaunch"])
{
// app already launched
[[NSUserDefaults standardUserDefaults]synchronize];
}
else
{
[[NSUserDefaults standardUserDefaults]setBool:YES forKey:@"isFirstLaunch"];
[[NSUserDefaults standardUserDefaults]synchronize];
// call this method only for the first load.
//[self performSelector:@selector() withObject:nil afterDelay:0.5];
[self performSelector:@selector(saveProfile) withObject:Nil afterDelay:0.5];
}
}
-(void) saveProfile
{
[LASplashViewer showSplashScreen];
}
日志:
终止应用程序由于未捕获的异常 'NSInvalidArgumentException',原因: '+ [LASplashViewer saveUserProfileSetting]:无法识别的选择发送到类0x2a4dc'
请引导我。由于
其中具有u定义saveProfile方法? –
'[self performSelector:@selector(saveProfile)withObject:Nil afterDelay:0.5];'我觉得你的问题在这里 – Zhans
plese看看我最近的编辑。 – LUI