[自我回复]后的通话功能

时间:2015-02-01 11:52:16

标签: ios objective-c xcode xcode6

我需要从一个ViewController传递到第二个只调用[self back]并在返回功能后打开alertView。有可能吗?

编辑:

在FirstViewController中

- (void)didPressBuyPackageButton:(UIButton *)sender
{
    UIButton *button = (UIButton *)sender;

    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Title "
                                                        message:@"Message "
                                                       delegate:self
                                              cancelButtonTitle:@"Close"
                                              otherButtonTitles:@"Koupit",@"Obnovit koupu", nil];

    switch (button.tag) {
        case 1: // Texty pre balicek c. 1 (Rocnik 2 - Balicek 1)
            alertView.title = @"Ročník 2";
            alertView.message = @"Tu bude popis čo balíček obsahuje.";
            alertView.tag = 1;
            break;
        case 2:
            alertView.title = @"Ročník 2 - Balíček 2";
            alertView.message = @"Tu bude popis čo balíček obsahuje.";
            alertView.tag = 2;
            break;
        case 3:
            alertView.title = @"Ročník 3 - Balíček 1";
            alertView.message = @"Tu bude popis čo balíček obsahuje.";
            alertView.tag = 3;
            break;

        default:
            break;
    }
    [alertView show];    
}

而我需要的是从SECOND_ViewController调用函数,它显示FirstViewController并调用Function" didPressBuyPackageButton" ...

1 个答案:

答案 0 :(得分:1)

如果您在第二个视图控制器的上下文中,可以从中调用dismissViewControllerAnimated:completion:以转换回第一个视图控制器。它为您提供了一个完成回调,您可以使用它来显示UIAlertView

修改

- (void)back {
    // get a reference to presentingViewController
    FirstViewController *presentingViewController = (FirstViewController *)self.presentingViewController;

    // dismiss the second view controller
    [self dismissViewControllerAnimated:YES completion: ^{
        // show the alert
        [presentingViewController showAlert];
    }];
}

您需要从第二个视图控制器调用back

另一种方法是使用委托:第一个视图控制器实例化第二个视图控制器并将其自身设置为第二个视图控制器的委托。在back(第二个视图控制器)中,只需通知您的代理(第一个视图控制器)它(第二个视图控制器)已完成并将其关闭。使用完成块来处理动画的结束。同样的伎俩。