【问题标题】:How to stop execution while waiting for user input in a Modal View如何在模态视图中等待用户输入时停止执行
【发布时间】:2011-10-13 13:33:18
【问题描述】:

我有一个导航控制器,显示一个 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 模式视图后等待单击该视图中的“确定”按钮以将其关闭并继续流程,但我该怎么做呢?

【问题讨论】:

    标签: cocoa-touch modalviewcontroller


    【解决方案1】:

    您正在使用这行代码向模态控制器展示:

    [self presentModalViewController:expiredView animated:YES];
    

    然后在两行之后立即将其关闭:

    [self.modalViewController dismissModalViewControllerAnimated:YES];
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-30
      • 1970-01-01
      • 1970-01-01
      • 2012-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多