0

UIAlertView優先メッセージがサーバーから収集されたときに表示される、単純なメッセージアラートシステムを作成しようとしています。メッセージは、次の形式のタブ区切り文字列として送信されます。

Priority:TRUE\tTrackingID:MESSAGEID\tFrom:FROMUSERNAME\tFromID:FROMID\tSentTime:SENTTIME\tMessage:text

メッセージはテーブル ビューにリストとして表示されます。セルをクリックすると、メッセージの内容を含む詳細ビューに移動します。メッセージが優先度としてマークされている場合、警告が表示され、閉じると、ユーザーはそのメッセージの詳細ビューに直接移動します。

各文字列を処理するためのコードは次のとおりです。

NSArray *msgArray = [messageString componentsSeparatedByString:@"\t"];
[self storeMessageData:msgArray];

それで:

- (void) storeMessageData: (NSArray *)messagesArray
{    
    if ([messagesArray[0] isEqualToString:@"Priority:True"])
    {
        [self alertWithMessage:@"priority"];
    }
}

と:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{    
    if (buttonIndex == 0)
    {
        [self performSegueWithIdentifier:@"showPriority" sender:self];
    }
}

これは、メッセージが 1 つしか取得されていない場合は問題なく動作しますが、2 つ以上のメッセージがある場合は、アラートを閉じると引き続きセグエが実行されますが、メッセージが存在する回数だけ、アラートがすぐに再びポップアップし、その後に別のセグエが続きます。

私が知りたいのは、このプロセスを中断して、ユーザーが最初のメッセージを処理できるようにする方法です。複数のメッセージがある場合は、前のビューに戻るときに別のアラートが表示されます。どんなアイデアでも大歓迎です。

4

1 に答える 1

1

すべてのメッセージをループして、メッセージごとにアラートを表示するメソッドを呼び出す代わりに、複数のアラートがユーザーに表示されるようにする代わりに、ループ中にすべての「優先度」メッセージを配列に追加します。次に、配列内のアラートの数を確認すると、この情報を反映する 1 つのアラートを表示できます。たとえば、1 つのメッセージについて、メッセージのタイトルとその他の情報を alertView のタイトルとメッセージとして表示できます。複数のメッセージがある場合は、「優先度の高い新しいメッセージが x 件あります」のようなタイトルを付けることができます。ここで、x はメッセージの数とその他の説明です。

于 2013-06-17T16:06:48.527 に答える