0
 - (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message
{
       ChatViewController *chatView;
       if(contactView==nil)
       {                
       chatView=[[ChatViewController alloc] initWithNibName:@"ChatViewController" bundle:nil];
        }   
       [self.navigationController pushViewController:chatView animated:YES];
       [messageDelegate newMessageReceived:m]; 
}

上記のデリゲートメソッドは、すべての着信メッセージに対して呼び出されました。呼び出されると、新しいUIViewControllerに移動します。ここでの問題は、ビューが複数のティンムをプッシュしたため、エラーが発生することです。iPhoneでこのエラーを修正するにはどうすればよいですか。

4

1 に答える 1

3

ビューコントローラをプッシュする前に、このスニペットを追加してください

BOOL viewControllerAlreadyPushed = NO;
for (UIViewController *controller in self.navigationController.viewControllers) {
    if ([controller isKindOfClass:[ChatViewController class]]) {
        viewControllerAlreadyPushed = YES;
    }
}

if(!viewControllerAlreadyPushed) //if not pushed, push it
{
    ChatViewController *chatView;
    if(contactView==nil)
    {                
        chatView=[[ChatViewController alloc] initWithNibName:@"ChatViewController" bundle:nil];
    }   
    [self.navigationController pushViewController:chatView animated:YES];
    [messageDelegate newMessageReceived:m]; 
}
于 2012-06-30T13:26:04.883 に答える