- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我是 swift 的新手,我还没有找到任何关于这个的答案。我有一个游戏,其中有一个 slider 和一个随机值,因此用户必须猜测 slider 上的值。当用户猜测数字并按下 ok 按钮时,它会调用 View Controller 。当他非常接近时,它会调用另一个 View Controller ,最后如果他没有猜到,它会调用另一个 View Controller ,然后用户重新启动。我的问题是,我如何以编程方式创建一个 segue,以便只需按 ok 即可将获得的积分和回合传递给每个 View Controller 。这些 View Controller 是在 Storyboard中创建的,我通过代码调用它们
感谢您的帮助!
@IBAction func okButton(sender: AnyObject) {
let diferencia = abs(targetValue - currentValue)
var point = 100 - diferencia
score += point
func bonusPoints() {
score += 100
}
if diferencia == 0 {
let viewController3 = self.storyboard!.instantiateViewControllerWithIdentifier("GonPerfectViewController") as UIViewController
presentViewController(viewController3, animated: true, completion: nil)
point += 100
newRound()
updateLabel()
bonusPoints()
} else if diferencia < 4 {
let viewController3 = self.storyboard!.instantiateViewControllerWithIdentifier("GonNiceTry1ViewController") as UIViewController
presentViewController(viewController3, animated: true, completion: nil)
point += 50
newRound()
updateLabel()
} else {
let viewController3 = self.storyboard!.instantiateViewControllerWithIdentifier("GonThirdViewController") as UIViewController
presentViewController(viewController3, animated: true, completion: nil)
startnewgame()
updateLabel()
}
}
最佳答案
既然你说“那些 View Controller 是在 Storyboard中创建的”,我相信你可以使用 performSegueWithIdentifier
和 prepareForSegue
:
在okButton
方法之外声明您的变量。
let targetValue = 10 // this is just to test the first case
let currentValue = 10 // this is just to test the first case
var score = 0
var point = 0
@IBAction func okButton(sender: AnyObject) {
let diferencia = abs(targetValue - currentValue)
point = 100 - diferencia
score += point
func bonusPoints(){
score += 100
}
if diferencia == 0{
performSegueWithIdentifier("GonPerfectViewController", sender: nil)
point += 100
print(point)
newRound()
updateLabel()
bonusPoints()
}else if diferencia < 4{
performSegueWithIdentifier("GonNiceTry1ViewController", sender: nil)
point += 50
newRound()
updateLabel()
}else{
performSegueWithIdentifier("GonThirdViewController", sender: nil)
startnewgame()
updateLabel()
}
}
然后你必须使用prepareForSegue
:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "GonPerfectViewController"{
let vc = segue.destinationViewController as! GonPerfectViewController
vc.point = point
}
if segue.identifier == "GonNiceTry1ViewController"{
let vc = segue.destinationViewController as! GonNiceTry1ViewController
vc.point = point
}
if segue.identifier == "GonThirdViewController"{
let vc = segue.destinationViewController as! GonThirdViewController
vc.point = point
}
}
确保在每个 viewControllers 中设置 segue 标识符
当然,您还必须在 View Controller 中声明 var point
:
class GonPerfectViewController: UIViewController {
var point = 0
override func viewWillAppear(animated: Bool) {
print(point)
}
}
您可以找到有关 segue 的更多信息 here
关于ios - 如何以编程方式创建 segue 以在 View Controller 之间传递信息 - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34450745/
我一整天都遇到同样的错误,我知道这是在说 Storyboard 中没有识别出 segue,但确实如此。以下是我认为相关的代码:1.为 segue 发出信号的按钮的 IBAction。 -(IBActi
我有一个从 A View Controller 到 B View Controller 的 unwind segue。 在B中做了一个网络操作,操作完成后,响应会显示在A View Controlle
我正在创建一个应用程序,家长可以在其中登录并查看有关其本地托儿中心的信息。但是,为登录运行 View Controller 的代码无法正常工作。一旦用户按下登录按钮,我希望我的代码使用标识符“Show
刚刚遇到一个奇怪的问题。我有一个启动画面,它自动使用自定义 segue (fade-to-segue) 转到主页 ViewController。自定义 segue 工作正常,但一旦实现,我在主页上的其
以编程方式创建的 segue 在 performSegueWithIdentifier: 上使应用程序崩溃,不过我真的不想使用 Storyboard。 - (void)viewDidLoad { [s
我想我一定在这里遗漏了一些简单的东西,但我不知道它是什么。 我必须支持来自同一个 View Controller 的多个 segue,所以我很自然地想使用 segue 标识符。我的代码由于某种原因无法
当用户在警告时点击“确定”按钮时,我如何才能将用户带到自定义 View Controller ? 我有一个主 Controller -> 导航 Controller -> 第二个 View Contr
在 TableView Controller 中,我试图获取在我继续之前选择的行的索引(最终将传递此信息以准备继续)。我已经实现了这个功能: var selectedQuestionCell: Ind
我正在 Xamarin Studio 中开发一个应用程序(所以它是 C#),它有一个包含多个 TextField 的表单,我想在 segue 之前验证整个屏幕> 到下一个屏幕执行。单击按钮时,它正在使
我有一个带有标识符的 segue。 当我按下函数 shouldPerformSegueWithIdentifier 中的按钮时,我得到一个空标识符 什么会导致这样的问题?我设置错了什么? 这是我的代码
我有一个奇怪的问题。我在 Storyboard中创建了 2 个 View Controller :testSegueViewcontroller 和 nextPageViewController。 t
我下面的代码试图将一个值从 twoviewcontroller 转移到 View Controller 。 segue 正在工作,我可以从 View Controller 转到 View Contro
我正在尝试使用自定义segue,当单击按钮时,它会使 View 向右或向左“滚动”。我添加了一个如下所示的自定义类 class horizontalSegue : UIStoryboardSegue
我有一个带有 Root View Controller 的 UINavigationController。我的 UINavigationController 也设置为我的应用程序的 Initial V
您好,我正在尝试使用 prepare for segue 方法执行一个 segue。我在关注这个问题 this但我无法成功注册。当我单击注册按钮时,它所做的只是注册用户并停在那里。我从 View Co
当 Storyboard上有一个按钮连接退出时,我了解如何使用展开转场。但是在我的应用程序中,我使用推送转场从 TableViewController 转到 ViewController。所以我的导航
我要实现的目标的背景: MainViewController 呈现 TableVC。我将点击一个单元格以显示 DetailVC。能够通过 TableVC 或 DetailVC 上导航栏上的 doneB
在我的 Storyboard中,模态转场将用户带到登录屏幕(从主屏幕)。然后,我从注册屏幕添加了一个 PUSH segue 到下一个屏幕(创建配置文件),该屏幕嵌入在导航 Controller 中(创
我有大约 6 个 segue 在 prepareForSegue 方法中执行相同的操作,但是,我想为我的 unwind segue 跳过此操作,但我无法弄清楚如何确定传递的 segue 是 unwin
因此,我开始在XCode 4.3.2中使用 Storyboard 。我从Master-Detail应用程序(iPad的拆分 View 应用程序)开始。在详细信息 View (名为DetailVC)中,
我是一名优秀的程序员,十分优秀!