我开始看一下新Swift的Xcode 6,我尝试了一些演示项目和教程.现在我被困在:
实例化然后viewController从特定的故事板中呈现
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"myStoryboardName" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"myVCID"];
[self presentViewController:vc animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
如何在Swift上实现这一目标?
我正在使用SpriteKit在Xcode 8中制作一个游戏,并且在编程上触发segue时非常困难.我已经进入"Main.storyboard"并在我的"GameViewController"和"MenuViewController"之间制作了一个segue,因为它标识符为"toMenu".
尝试失败#1
在我的GameScene.swift文件中,我将以下代码添加到更新功能中.
override func update(_ currentTime: TimeInterval) {
// Called before each frame is rendered
if gameIsRunning == false{
score = 0
performSegue(withIdentifier: "toMenu", sender: self)
}
}
Run Code Online (Sandbox Code Playgroud)
我的目标是每当gameIsRunning为false时触发segue.但是,我收到以下错误:
Use of unresolved identifier 'performSegue'
Run Code Online (Sandbox Code Playgroud)
这很奇怪,因为performSegue是根据API Reference的声明.
尝试失败#2
我通过将以下代码放入"GameScene.swift"来尝试此解决方案
override func update(_ currentTime: TimeInterval) {
// Called before each frame is rendered
if gameIsRunning == false{
score = 0
GameScene(MenuViewController, animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误:
Type of expression is ambiguous without more context
Run Code Online (Sandbox Code Playgroud)
尝试失败#3
我发现 …
我正在尝试使用视图控制器.segue的标识符是"Orange"(另一个视图控制器只是一个橙色视图).视图控制器通过故事板进行查看,并连接到主视图控制器中的图像视图.我想用平移手势识别器触发它.因此,当检测到平移时,它只是偏移到视图控制器.
这是我的尝试:
@IBOutlet var panGesture: UIPanGestureRecognizer!
@IBAction func onPan(sender: UIPanGestureRecognizer) {
if panGesture.state == .Ended {
print("panned")
performSegueWithIdentifier("Orange", sender: sender)
}
}
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用.我知道它确实检测到了泛,但它没有执行segue.
我读了如何从IOS呈现segue - 如何使用swift以编程方式进行segue
有一个MenuViewController类,其中记录了表中记录的数组:
import Foundation
import UIKit
class MenuViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var menuTableView: UITableView!
let myTitle = ["??????", "??????????", "?????????"]
override func viewDidLoad() {
super.viewDidLoad()
menuTableView.delegate = self
menuTableView.dataSource = self
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return myTitle.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = menuTableView.dequeueReusableCell(withIdentifier: "MenuCell") as! MenuTableViewCell
cell.labelText.text = myTitle[indexPath.row]
return cell
}
}
Run Code Online (Sandbox Code Playgroud)
你需要在里面写什么才能进入信息控制器?