在AppDelegate中切换视图时出错

时间:2011-03-27 19:17:24

标签: objective-c xcode ios4 uiview uiviewcontroller

我正在制作一款具有登录功能的iPhone应用程序。登录后,我将其写入数据库。当用户打开应用程序时,我希望它检查是否要转到应用程序或显示UIView以供他们登录。我有一些代码,但它崩溃了。这是:

- (void)applicationDidFinishLaunching:(UIApplication *)application {    
sleep(5);
// Configure and show the window
[window addSubview:[navigationController view]];
[window makeKeyAndVisible];
//[application setStatusBarStyle:UIStatusBarStyleBlackOpaque];

int checkLoginCount = 0;
NSArray *checkLoginInfo = [database executeQuery:@"SELECT * FROM login WHERE id != '' or email != '' or password != ''"];   
for (NSDictionary *checkLoginRow in checkLoginInfo) {
    checkLoginCount++;
}

NSLog(@"alsdfjaldfksjalsdfjkas %d", checkLoginCount);

if (checkLoginCount == 0) {
    SplashPageViewController *screentwo = [[SplashPageViewController alloc] initWithNibName:@"splashPage" bundle:nil];
    //NSLog(@"aldjksflasdfjadksaldfjsaldksfj %@", screentwo);
    screentwo.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
    [self presentModalViewController:screentwo animated:NO];
    [screentwo release];
} else {
    splashView = [[UIImageView alloc] initWithFrame:CGRectMake(0,0, 320, 480)];
    splashView.image = [UIImage imageNamed:@"Default.png"];
    [window addSubview:splashView];
    [window bringSubviewToFront:splashView];
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.5];
    [UIView setAnimationTransition:UIViewAnimationTransitionNone forView:window cache:YES];
    [UIView setAnimationDelegate:self]; 
    [UIView setAnimationDidStopSelector:@selector(startupAnimationDone:finished:context:)];
    splashView.alpha = 0.0;
    //splashView.frame = CGRectMake(-60, -60, 440, 600);
    [UIView commitAnimations];
}
}

这是错误:

-[TableViewAppDelegate presentModalViewController:animated:]: unrecognized selector sent to instance 0x4e3e860
TableView[15309:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[TableViewAppDelegate presentModalViewController:animated:]: unrecognized selector sent to instance 0x4e3e860'
*** Call stack at first throw:
(
0   CoreFoundation                      0x00fccbe9 __exceptionPreprocess + 185
1   libobjc.A.dylib                     0x011215c2 objc_exception_throw + 47
2   CoreFoundation                      0x00fce6fb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
3   CoreFoundation                      0x00f3e366 ___forwarding___ + 966
4   CoreFoundation                      0x00f3df22 _CF_forwarding_prep_0 + 50
5   TableView                           0x00002b02 -[TableViewAppDelegate applicationDidFinishLaunching:] + 473
6   UIKit                               0x002e6253 -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1252
7   UIKit                               0x002e855e -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 439
8   UIKit                               0x002f2db2 -[UIApplication handleEvent:withNewEvent:] + 1533
9   UIKit                               0x002eb202 -[UIApplication sendEvent:] + 71
10  UIKit                               0x002f0732 _UIApplicationHandleEvent + 7576
11  GraphicsServices                    0x0186fa36 PurpleEventCallback + 1550
12  CoreFoundation                      0x00fae064 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
13  CoreFoundation                      0x00f0e6f7 __CFRunLoopDoSource1 + 215
14  CoreFoundation                      0x00f0b983 __CFRunLoopRun + 979
15  CoreFoundation                      0x00f0b240 CFRunLoopRunSpecific + 208
16  CoreFoundation                      0x00f0b161 CFRunLoopRunInMode + 97
17  UIKit                               0x002e7fa8 -[UIApplication _run] + 636
18  UIKit                               0x002f442e UIApplicationMain + 1160
19  TableView                           0x000027f6 main + 84
20  TableView                           0x00002799 start + 53
21  ???                                 0x00000001 0x0 + 1
)
terminate called after throwing an instance of 'NSException'
  • 数据库不是零

也许我不能用那种方法做那个动作。谁知道。任何帮助表示赞赏!
库尔顿!

1 个答案:

答案 0 :(得分:1)

首先sleep(5);是一个坏主意,你应该避免在主线程上使用sleep(最好不要在任何地方使用它)。

似乎您将所有代码都放在一个文件(主应用代理)中,它也是一个tableview委托?这就是为什么你有如此混乱的代码,试图将逻辑划分为两组。

例如,您可以借助导航控制器显示模态视图:

[[self navigationController] presentModalViewController:modalViewController animated:YES];

并使用

将其解雇
[self.navigationController dismissModalViewControllerAnimated:YES];

在iOS中,您可以通过在当前视图控制器中显示模态视图的控制器来以模态方式显示视图。所以你之前已经加载了任何视图控制器。