0

带有情节提要设置的 iPhone 应用程序。链接到另一个视图的初始视图上的按钮。我在该按钮单击时添加了一个警报,这样当点击它时,视图会发生变化,并且会立即出现警报,询问“您要继续吗?是的 没有'

如果他们点击是警报消失,如果他们点击否故事板应该回到开始。

这是我到目前为止所得到的,它不起作用,没有任何反应。我已经尝试了多种在 SO 上吹捧的各种解决方案,但到目前为止没有任何效果。删除 buttonindex 检查不会做任何事情。

实际上,我更希望在视图更改之前出现此警报,但目前我在 segue 发生后显示它,这并不理想,但如果我能让它重新开始,它仍然是可以接受的。

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{

   if (buttonIndex==1)     {
        [self.navigationController popViewControllerAnimated:YES];

    }
}

有任何想法吗?

4

1 回答 1

1

我猜你已经使用情节提要上的 segue 将第一个视图上的按钮链接到第二个视图。要获得它,以便 UIAlertView 在第一个视图上弹出,然后根据单击是或否来触发 segue,您需要删除该 segue,而是通过从第一个视图中拖动 Ctrl 重新创建它(不是按钮)到第二个视图。

通过按住 Ctrl 键从您的按钮拖动到视图 .h 文件并选择操作,为您的按钮创建一个 IBAction(如果您还没有)。这应该会自动在 .m 文件中创建方法 - 在该方法中,您需要调用 UIAlertView。

- (IBAction)buttonPressed:(id)sender
{
    [myAlertView show];
}

那么 clickedButtonAtIndexMethod 应该和你之前的类似。而不是弹出一个控制器(因为 segue 没有自动发生),你需要使用 performSegueWithIdentifier 调用你的 segue。

- (void)alertView (UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    // They clicked Yes
    if (buttonIndex==1)     
    {
        [self performSegueWithIdentifier:@"YourSegueName" sender:self];
    }
}

关于未调用 clickedButtonAtIndex 方法,您是否将视图设为 UIAlertView 的委托?因此,在您的视图 .h 文件中,您需要有这样的 UIAlertViewDelegate:

@interface MyViewController : UIViewController <UIAlertViewDelegate>
于 2013-11-06T17:19:59.290 回答