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];
    }
}

如果只检索到一条消息,但如果有两条或更多条消息,则此方法可以正常工作,解除警报仍会执行 segue,但随后警报会立即再次弹出,然后是另一个 segue,次数与消息数一样多。

我想知道的是我将如何中断此过程,以便用户能够处理第一条消息,如果有多个消息,则在返回上一个视图时会显示另一个警报。任何想法表示赞赏。

4

1 回答 1

1

而不是遍历所有消息并调用为每个消息显示警报的方法,这会导致向用户显示多个警报,在循环时,将所有“优先级”消息添加到数组中。然后,检查数组中的警报数量,您可以显示一个反映此信息的警报:例如,对于一条消息,您可以显示消息的标题和一些其他信息作为 alertView 的标题和消息,而当您有多条消息,您可以有一个标题,说明“您有 x 条具有高优先级的新消息”,其中 x 是消息的数量和其他一些描述。

于 2013-06-17T16:06:48.527 回答