如何在模态视图中等待用户输入时停止执行

时间:2011-10-13 13:33:18

标签: cocoa-touch modalviewcontroller

我有一个显示TableView的Navigaton Controller和一个带按钮的工具栏。 如果用户按下按钮,则显示具有多个按钮的模态视图。按下其中一个按钮后,将加载一组新数据并重新加载tableView。

在一定条件下重新加载一组新数据时,我需要显示一个模态视图,以提醒用户某些情况。

这是我原来编写的代码,向用户显示警告:

- (void) selectEventosListMVCButtonPressed:(NSInteger)button    
{
    switch (button) {        
    .
    .
    .
    .
    case 3:
        // eventos favoritos

        // Load Favourites Events
        // This is the new data to load
        if (!self.eventosFavourites) {
            [self loadEventos:kURLEventosCopyFavourites];
        }
        // Empty the container
        [self.eventosListsContainer removeAllObjects];
        // Load Favourites Eventos
        [self.eventosListsContainer addObject:self.eventosFavourites];
        // Reload the view
        [self.tableView reloadData];

        // Load Expired Events
        // If there are some eventosExpired then show alert to user
        if (!self.eventosExpired) {
            [self loadEventos:kURLEventosCopyExpired];
        }
        if (self.eventosExpired) {
            // There are expired eventes
            // Load a modal view to inform the user
            ExpiredEventosMVC *expiredView = [[ExpiredEventosMVC alloc] initWithNibName:@"ExpiredEventosMVC" bundle:0];
            expiredView.delegate = self;
            expiredView.eventos = self.eventosExpired;
            [self presentModalViewController:expiredView animated:YES];
            [expiredView release];
        }
        break;
}
[self.modalViewController dismissModalViewControllerAnimated:YES];
[self.modalViewController release];
}

但模态视图从未显示过。 为了实现这个目的,我应该等到ExpiredEventosMVC模式视图显示给用户后单击该视图中的OK按钮以关闭它并继续流程,但是我该怎么做?

1 个答案:

答案 0 :(得分:1)

您将使用以下代码行演示模态控制器:

[self presentModalViewController:expiredView animated:YES];

然后立即解雇它两行:

[self.modalViewController dismissModalViewControllerAnimated:YES];

在用户按下其中一个按钮之后,您的代码应该关闭控制器,而不是之前。为此,请配置按钮以将操作消息发送到控制器,然后从那里调用dismissModalViewControllerAnimated:

顺便说一下,命名存储视图控制器expiredView的变量可能会导致混淆。考虑expiredControllerexpiredViewControllerexpiredVC。 (但不是expiredMVC - 这也不是一个好主意.MVC是Model-View-Controller的首字母缩写 - 一种设计模式,而不是一个类。)