【问题标题】:Error switching views in AppDelegate在 AppDelegate 中切换视图时出错
【发布时间】:2011-03-27 19:17:24
【问题描述】:

我正在制作一个具有登录功能的 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'
  • 数据库不为零

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

【问题讨论】:

    标签: objective-c xcode ios4 uiview uiviewcontroller


    【解决方案1】:

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

    您似乎将所有代码都放在一个文件中(主应用程序委托),而且它也是一个 tableview 委托?这就是为什么你有这么乱的代码,试着把逻辑分成两组。

    例如,您可以在导航控制器的帮助下显示模态视图:

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

    并使用

    将其关闭
    [self.navigationController dismissModalViewControllerAnimated:YES];
    

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

    【讨论】:

    • 谢谢,成功了!是的,我知道它在两个地方。我正在把它移过来,并打算在另一个地方删除它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    • 1970-01-01
    相关资源
    最近更新 更多