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

Cocoa touch 如何在模式视图中等待用户输入时停止执行,cocoa-touch,modalviewcontroller,Cocoa Touch,Modalviewcontroller,我有一个导航控制器,显示一个TableView和一个带有按钮的工具栏。 如果用户按下按钮,将显示带有多个按钮的模式视图。按下其中一个按钮时,将加载一组新数据,并重新加载tableView 在某种情况下,当重新加载一组新数据时,我需要显示一个模式视图,以提醒用户某些情况 这是我最初编写的向用户显示警报的代码: - (void) selectEventosListMVCButtonPressed:(NSInteger)button { switch (button) {

我有一个导航控制器,显示一个TableView和一个带有按钮的工具栏。 如果用户按下按钮,将显示带有多个按钮的模式视图。按下其中一个按钮时,将加载一组新数据,并重新加载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模式视图后等待,单击该视图中的“确定”按钮以关闭该视图并继续流程,但我如何才能做到这一点?

您正在向模式控制器显示以下代码行:

[self presentModalViewController:expiredView animated:YES];
然后两行之后立即将其驳回:

[self.modalViewController dismissModalViewControllerAnimated:YES];
您的代码应该在用户按下控制器的一个按钮后(而不是之前)关闭控制器。要执行此操作,请将按钮配置为向控制器发送操作消息,然后从那里调用
dismissModalViewControllerAnimated:

顺便说一下,命名存储视图控制器的变量
expiredView
可能会导致混淆。考虑<代码> Exchange控制器,<代码> ExpReVIEW控制器< /代码>,或<代码> ExpReVC。(但不是
expiredMVC
——这也不是一个好主意。MVC是Model View Controller的缩写——一种设计模式,而不是类。)