在不同的View Controller上执行UIActionSheet操作?

时间:2014-01-16 18:20:32

标签: ios iphone objective-c uiviewcontroller uiactionsheet

我的应用程序中有一个滑出菜单,其中有一个显示UIActionSheet的按钮。这个滑出菜单只是部分涵盖了您以前所使用的任何视图控制器。

- (void)cameraButtonPushed:(UIButton *)sender
{   
    UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Create String" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Take Photo", @"Choose from Library", nil];

    [actionSheet showInView:[UIApplication sharedApplication].keyWindow];

    //[actionSheet showInView:self.parentViewController.view];
}

正如您所看到的,我尝试了两种显示操作表的方法,它们看起来都是一样的。

我与操作表按钮有关的问题实际上有效。它显示在父视图控制器(您所在的视图控制器)中,但是如果我按下任何按钮它们就不起作用。

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (buttonIndex == 0) {
        EditVC *newEditVC = [self.storyboard instantiateViewControllerWithIdentifier:@"editVC"];
        [editVC setHidesBottomBarWhenPushed:YES];
        [self.parentViewController.navigationController pushViewController:newEditVC animated:YES];

      //[self.navigationController pushViewController:newEditVC animated:YES];
    } else if (buttonIndex == 1) {
        EditVC *newEditVC = [self.storyboard instantiateViewControllerWithIdentifier:@"editVC"];
        [editVC setHidesBottomBarWhenPushed:YES];
        [self.parentViewController.navigationController pushViewController:newEditVC animated:YES];

      //[self.navigationController pushViewController:newEditVC animated:YES];
    }
}

上述两种方法都在按下按钮的菜单视图控制器中。我放了一些断点来测试它,并调用了动作表委托方法。 if语句工作正常,但新的VC没有按照应有的方式被推送到导航控制器上。它只是在那些线上运行而没有任何反应。我也试过以父视图控制器中也有actionSheet:clickedButtonAtIndex:方法的方式进行设置,但是没有调用该方法。

我认为这与使用不合适的代表设置actionSheet有关,但我不确定。

如何从一个视图控制器调用此操作表,显示它并在另一个视图控制器中执行操作?我把它出现在正确的VC中,但是这个动作并没有起作用。

0 个答案:

没有答案