- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 Swift 和一般编程还很陌生。我正在制作一个测验应用程序,我想在我的测验 View Controller 和一个新的 View Controller 之间传输信息。我已经成功地做到了这一点,但现在我想使用 UIAlertView
来获取信息。
我遇到的问题是,当它转换到新的 View Controller 时,数组没有被填充。当我使用普通的 UI 按钮时,它可以正常工作,但使用 UI 警报时它似乎不起作用。
当按下这个按钮时,程序会检查用户是否已经回答了所有问题,然后创建一个 UIAlertView
- 如果用户按下 Yes,那么它应该转到下一个 Controller 并传递所需的信息,但事实并非如此。
目标 View Controller 中的数组没有问题,因为它一直工作正常,直到我决定进行此切换。
@IBAction func submitAll(sender: UIButton) {
let hasAnsweredAllQuestions = questions.reduce(true) { (x, q) in x && (q.usersAnswer != nil) }
println("has user answered all questions?: \(hasAnsweredAllQuestions)")
if hasAnsweredAllQuestions == true {
let alert: UIAlertView = UIAlertView()
alert.delegate = self
alert.title = "Submit Answers?"
alert.message = "If you click yes, your answers will be submitted. If you aren`t finished with the exam press continue."
alert.addButtonWithTitle("Yes")
alert.addButtonWithTitle("Continue")
alert.show()
println(userAnswers)
} else if hasAnsweredAllQuestions == false {
let alert = UIAlertView()
alert.title = "Hey, Wait!"
alert.message = "You have not answered all questions. Please finish the quiz."
alert.addButtonWithTitle("Ok")
alert.show()
}
}
这里程序将所有用户响应和正确答案附加到一个新数组,并准备好将它们发送到下一个 View Controller 。
作为 Debug模式,我创建了一个简单的 if 语句来确保数组被填充。
此处程序转入下一个 View Controller ,但目标 View Controller 中的数组未被填充。当我只使用一个简单的 UIButton
而不是警报时,它最初是有效的。
func alertView(View: UIAlertView!, clickedButtonAtIndex buttonIndex: Int){
switch buttonIndex{
case 0: // Yes
for (index, _) in enumerate(questions) {
userAnswers.append(questions[index].usersAnswer!)
correctAnswers.append(questions[index].answer!)
println("this is working")
}
if userAnswers.count == 4 {
self.performSegueWithIdentifier("segue.push.alert", sender: self)
func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
if(segue.identifier == "segue.push.alert") {
var answerSummary = segue.destinationViewController as! ResultsViewController
answerSummary.correctAnswersResults = correctAnswers
answerSummary.userAnswersResults = userAnswers
}
}
}
break;
default: // Continue
NSLog("Default");
break;}
}
最佳答案
您的 prepareForSegue(_:sender:)
方法嵌入在您的 alertView(_:clickedButtonAtIndex:)
方法中。
虽然这在 Swift 中是合法的,但 UIKit 不会调用此方法。它必须是您的 View Controller 子类中的一个方法(例如您的 alertView(_:clickedButtonAtIndex:)
方法)。
您可能想查看一些有关 Xcode 调试的文档;我认为在该方法中设置断点会告诉您它从未被调用过。
关于ios - 如何从 UIAlert 中分离并传递信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30851656/
当 UIAlertController 与自定义 View 和 UITextField 一起出现时如何显示键盘?我的意思是我想在用户不触摸警报 View 中的 UITextField 的情况下自动显示
我目前正在使用本地通知来指示来自后台模式的来电。这很好用,但这是我看到的,当 Skype 在后台模式下接到电话时: 所以看起来可以从后台显示 UIAlert 并且任何人都可以回答我如何? 最佳答案 不
我在使 UIAlerts 工作时遇到了一些麻烦。我看过几个似乎解决了这个问题的问题,但我仍然有问题。警报 View 似乎没有显示。这是我的代码: var inputTextField:
我想在应用程序中显示一次 UIAlert,所以我尝试使用 Bool type showones。所以我在 viewdidLoad 中将其设置为 false,然后当我点击警报中的“完成”时,它会显示警报
我的代码曾经运行良好,但由于某种原因今天运行它,它执行了不同的任务。我基本上试图在用户的用户名、电子邮件或密码很短的情况下显示警报,否则将发出注册完成的警报,然后转到下一个 View 。但是现在,一旦
我正在使用 UITableView。如果没有网络连接,viewDidload 将会抛出异常。我的 viewDidLoad 函数是: @try { NSLog(@"Re
这里是新鲜绿色的新手。我刚开始编程并且已经被 UIAlert 困住了。我在这个网站上搜索过,但是有太多的帖子,正如我所说的,我对这一切有点陌生,所以我不知道真正要寻找什么。这就是我的。 -(void)
我已经在我的应用程序上成功设置了推送通知。当我向未运行应用程序的用户发送推送时,他们会收到他们应该收到的横幅样式。 但是,当用户打开应用程序时,推送通知不会显示为横幅,而是显示为 UIAlert。接收
我想在用户第一次打开我的应用程序时做一个 UIalert,告诉他们基本功能,但我不希望它在他们每次打开应用程序或重新加载主屏幕时显示。我在其他应用程序中看到过这种情况,但不知道最好的解决方法是什么。如
如果用户点击按钮并且标签文本为 0,我会尝试显示 UIAlert。我希望按钮在单击按钮后将标签文本更改为 0。当我尝试这样做时,UIAlert 在我不想要的时候出现了。这是我的按钮代码: @IBAct
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"open app" message:@" backgr..." delega
我遇到了一件奇怪的事情。我有我的 View ,然后我有一个 ScrollView ,我用一个按钮在其中设置动画。一切正常,但 native 对话框开始出现奇怪的动画? (参见 GIF 示例)当我注释掉
Facebook Messenger 应用程序在用户与推送通知警报消息交互后自动关闭 UIViewController。我想知道他们如何检测到用户单击了警报 View 中的其中一项操作。 我尝试基于推
我遇到了一个问题,所有 UIAlertView我的应用程序中的 s 需要一些时间才能显示出来。显示屏会立即变暗,但实际警报需要 5 秒才能显示。 我正在像这样创建它们: UIAlertView *al
我有一个测试连接操作逻辑。它将实时或不实时测试服务器。当逻辑完成测试并尝试在闭包线程内显示 UIAlertController 时会发生错误,这会使系统崩溃。 @IBAction func TestN
当调用键盘时,我使用 UIKeyboardWillShowNotification 上下 ScrollView 。这在大多数情况下都可以正常工作。但是,键盘有一个完成按钮,可以生成 UIAlert。没
我的 Xcode 非常糟糕,所以不要评判我。当用户扫描无效的二维码时,我试图暂停 captureSession,这将触发警报消息。用户关闭消息后,captureSession 将恢复。非常感谢所提供的
有没有办法删除 UIAlert 中操作之间的分隔符(actionSheet 样式)? 最佳答案 使用系统提供的UIAlertView无法做到这一点。 但是,看看 this Swift-written
我在呈现警报时遇到问题。我正在使用 UIAlertController。当用户按下提交按钮时,在应用程序执行某些操作时,需要立即显示“请稍候..”的警报。操作完成后,警报将消失。尽管应该在我开始执行操
这是一个由两部分组成的问题。 我已经创建了用户在首次启动该应用程序时必须同意的用户协议(protocol)(这是一个包含一些信息和同意/不同意按钮的警告) 我在 myAppDelegate.m 和方法
我是一名优秀的程序员,十分优秀!