- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个非常简单的流程运行,在每一轮简单的游戏之后计算分数,更新标签和所有正常的,非常简单的东西。我有一个 UIAlertView 可以通知玩家他/她的表现。我使用 UIAlertViewDelegate 来推迟所有更新、控件重置等,直到 UIAlertView 被关闭之后。这些方法是 [startNewRound]、[startOver] 和 [updateLabels]。很明显他们都做了什么。不管怎样,当用户打到第十轮时,我制作了另一个 UIAlertView 通知玩家游戏已经结束并显示总分。同样,我希望使用委托(delegate)将重置推迟到 AlertView 被关闭之后。唯一的问题是,对于 endGame AlertView,它似乎使用了第一个 AlertView 的委托(delegate)方法,导致游戏继续新一轮而不是从头开始。我希望这是有道理的。无论如何,这是我的代码片段。
if (round == 10){
UIAlertView *endGame = [[UIAlertView alloc]
initWithTitle: @"End of Game"
message: endMessage
delegate:self
cancelButtonTitle:@"New Game"
otherButtonTitles:nil];
[endGame show];
}
else {
UIAlertView *alertView = [[UIAlertView alloc]
initWithTitle: title
message: message
delegate:self
cancelButtonTitle:@"Next"
otherButtonTitles:nil];
[alertView show];
}
然后是委托(delegate)方法:
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
{
[self startNewRound];
[self updateLabels];
}
- (void)endGame:(UIAlertView *)endGame didDismissWithButtonIndex:(NSInteger)buttonIndex
{
[self startOver];
}
原来如此。正如我提到的,endGame AlertView 似乎正在使用 alertView 的委托(delegate),因此没有激活 [self startOver]
方法。所有方法都有效,只是 AlertView 使用了不正确的委托(delegate)方法。
问候,
迈克
最佳答案
像这样更改您的代码,
if (round == 10){
UIAlertView *endGame = [[UIAlertView alloc]
initWithTitle: @"End of Game"
message: endMessage
delegate:self
cancelButtonTitle:@"New Game"
otherButtonTitles:nil];
endGame.tag = 111;
[endGame show];
}
else {
UIAlertView *alertView = [[UIAlertView alloc]
initWithTitle: title
message: message
delegate:self
cancelButtonTitle:@"Next"
otherButtonTitles:nil];
alertView.tag = 222;
[alertView show];
}
并将方法委托(delegate)为,
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
{
if(alertView.tag == 111)
{
[self startNewRound];
[self updateLabels];
}
else if(alertView.tag == 222)
{
[self startOver];
}
}
关于iphone - UIAlertViewDelegate 未按预期运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12989719/
我是一名 Android 开发人员。 我想在我的代码中使用自定义 UIAlertViewDelegate。 类似演示 import UIKit class ViewController: UIView
我正在定义一个符合 UIAlertViewDelegate 的类: class PaymentAlert: NSObject, UIAlertViewDelegate { var orderI
我有一个非常简单的流程运行,在每一轮简单的游戏之后计算分数,更新标签和所有正常的,非常简单的东西。我有一个 UIAlertView 可以通知玩家他/她的表现。我使用 UIAlertViewDelega
我有实现 UIAlertViewDelegate 的 Controller 。在实现中我有: - (void)alertView:(UIAlertView *)alertView clickedBut
我是 Objective-C 的新手,我只是想弄清楚我是否可以使用 block 或选择器作为 UIAlertView 的 UIAlertViewDelegate 参数 - 哪个更合适? 我已经尝试了以
我正在尝试使用一种可选的委托(delegate)方法来扩展 UIAlertViewDelegate 协议(protocol)。 界面 @protocol HPAlertViewDelegate; @i
我正在使用 iPhone 的 Logo (MobileSubstrate 插件),并为我的 .h 文件 @interface MyClass : NSObject 和 - (void)alertVi
UIAlertViewDelegate 协议(protocol)定义了两个方法,alertView:clickedButtonAtIndex: 和 alertView:didDismissWithBu
在早期的 Objective-C 中,我们在 UIAlertView 中使用了 delegate:self,这样我们就可以在索引处调用类似 buttonclicked 的方法....但现在在 swif
我有一个从文件中读取的导入序列,解压缩包含的文件并为每个文件创建相应的核心数据实体。这整个过程发生在后台,并且已经为每个线程等创建了一个单独的上下文,所以一切正常。 事实证明,这个特定导入序列的一个理
几天来我一直在寻找这个问题的解决方案并找到了一些类似的帖子,但似乎没有人发布关于如何阻止我正在使用的实例获得 dealloc's 的明确答案.希望我只是错过了它,或者有人可以帮助我停止伤脑筋.. 我有
我在 ViewController 以外的类中遇到了 UIAlertView 委托(delegate)的问题。一切正常,直到用户单击 OK 按钮 - 然后应用程序崩溃并显示 Thread 1: EXC
小伙伴们: 在我的测试应用程序的 viewController 中有两个按钮,我称之为“否”的正确按钮, 另一个是"is"。两个按钮会调用两个不同的函数,而当 用户按下其中一个按钮,我想向用户显示一个
我们曾经在 ViewController.h 中使用 UIAlertViewDelegate 让我们的自定义警报按钮执行一个操作,比如在警报窗口中按下 Play Again 按钮使游戏重新开始。 我们
我添加了一个alertView来向用户显示警报消息(见下文) -(void)connectionAlert { UIAlertView *alert = [[UIAlertView alloc
我的应用程序中的多个 ViewController 必须显示相同的 UIAlertView 并以相同的方式执行 –alertView:clickedButtonAtIndex: 方法。我不想在多个文件
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预
我开始学习 Objective-C uikit,我遇到了一个问题。没有调用 UIAlertViewDelegate。谁能告诉我为什么?谢谢你! #import #import @interface
我有一个助手类,我想显示一个 UIAlertView,然后将执行一些 Web 服务操作。我想这样做,这样我就可以在其他地方重新使用警报 View 。 我是这样声明的: @interface FBLin
在发生以下情况之前,我以为我终于设法理解了委托(delegate)的概念:我更改了头文件以删除对委托(delegate)的引用,并且 Alert 仍然有效。唯一的区别是我丢失了代码提示。 //.h #
我是一名优秀的程序员,十分优秀!