0

私は次のようにUiAlertViewをインスタンス化しようとしています:

UIAlertView *alert = [[UIAlertView alloc] 
                                      initWithTitle:@"Error"
                                      message:@"Incorrect login or password."
                                      delegate:nil
                                      cancelButtonTitle:@"OK"
                                      otherButtonTitles:nil];   

セッションが期限切れになったのは、サーバーから応答を受け取った後です。その後、アプリはログイン画面に戻ります。そして、間違ったデータでログインしようとしていますが、アラートが表示されません。代わりに、次のようなものをスローします。

Thread 0 name:  Dispatch queue: com.apple.main-thread Thread 0 Crashed:
0   libobjc.A.dylib               0x33aa15b0 objc_msgSend + 16
1   UIKit                         0x3a39a370 -[UILabel _setText:] + 92
2   UIKit                         0x3a4e6648 -[UIAlertView
initWithTitle:message:delegate:cancelButtonTitle:otherButtonTitles:] + 64
3   MY APP                       0x00039c7e 0x34000 + 23678
4   MY APP                        0x0005f784 0x34000 + 178052
5   MY APP                       0x000756be 0x34000 + 267966
6   Foundation                    0x347d28e8 __NSThreadPerformPerform + 456
7   CoreFoundation                0x32bbd680
__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 12
8   CoreFoundation                0x32bbcee4 __CFRunLoopDoSources0 + 208
9   CoreFoundation                0x32bbbcb2 __CFRunLoopRun + 642
10  CoreFoundation                0x32b2eeb8 CFRunLoopRunSpecific + 352
11  CoreFoundation                0x32b2ed44 CFRunLoopRunInMode + 100
12  GraphicsServices              0x3a92c2e6 GSEventRunModal + 70
13  UIKit                         0x3a3ea2f4 UIApplicationMain + 1116
14  MY APP                       0x0003527e 0x34000 + 4734
15  MY APP                       0x000351dc 0x34000 + 4572   

@で作成された文字列を割り当てるものですか?

編集:リクエストにより、さらにコードを追加しています。x logOutメソッドを実行するだけなので、サーバー応答関数は適切ではないと思います。ちなみに、私が投稿しているコード全体はAppDelegateに配置されています

- (void) logout
{
    isLogged = NO;
    currentUser = nil;
    [self createNotLoggedIn];
}

次に、create notLoggedInメソッドは、ログインフォーム用のUIViewControllerを作成します。

-(void) createNotLoggedIn
{

    UIViewController *loginViewController = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];

    //UINavigationControllers are created here... stripped    

    self.tabBarController = [[UITabBarController alloc] init];
    self.tabBarController.delegate = self;
    self.tabBarController.viewControllers = [NSArray arrayWithObjects:navLoginViewController, navGrafikLekarzyViewController, navPlacowkiViewController, navWiecejViewController, nil];

    [self.window addSubview:self.tabBarController.view];

    [self.window makeKeyAndVisible];   
}

logOutとcreateNotLoggedInはAppDelegateに配置されます

4

3 に答える 3

1

スタックは、クラッシュが内部のテキスト関連のセッターメソッドで発生することを示しています。したがって、問題の原因は、おそらく引数として渡す文字列の1つです。

ブレークポイントを設定し、デバッガーで文字列を確認します。またはゾンビを有効にします。

于 2012-12-21T17:07:54.823 に答える
0

問題は次のとおりだと思います。

1   UIKit  0x3a39a370 -[UILabel _setText:] + 92

この行はラベルにテキストを設定していますが、null、nil、または空のようです。

それが役に立てば幸い、

よろしく、

リノジョーンズ

于 2012-12-31T08:57:21.767 に答える
0

ViewControllerが作成され、動作するときに、AlertDialogを表示しているコードをAppDelegateに移動しました

于 2013-01-04T12:13:57.217 に答える