Tôi mới sử dụng Swift và tôi muốn biết cách loại bỏ trình điều khiển chế độ xem hiện tại và chuyển sang chế độ xem khác.Làm cách nào để loại bỏ Chế độ xem hiện tại và chuyển đến Chế độ xem khác trong Swift
Bảng phân cảnh của tôi giống như sau: MainMenuView -> GameViewController -> GameOverView. Tôi muốn loại bỏ các GameViewController để đi đến GameOverView, không phải cho MainMenuView.
tôi sử dụng đoạn mã sau vào MainMenuView tôi:
@IBAction func StartButton(sender: UIButton) {
let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let nextViewController = storyBoard.instantiateViewControllerWithIdentifier("GameViewController") as! GameViewController
self.presentViewController(nextViewController, animated:true, completion:nil)
restGame()
}
Trong GameViewController, tôi sử dụng mã này, nhưng nó không bỏ qua những GameViewController.
let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let nextViewController = storyBoard.instantiateViewControllerWithIdentifier("GameOverView") as! GameOverView
self.presentViewController(nextViewController, animated:true, completion:nil)
Đây là Mã GameOverView của tôi:
class GameOverView: UIViewController{
// save the presenting ViewController
var presentingViewController :UIViewController! = self.presentViewController
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func ReplayButton(sender: UIButton) {
restGame()
didPressClose()
}
@IBAction func ReturnMainMenu(sender: UIButton) {
Data.GameStarted = 1
self.dismissViewControllerAnimated(false) {
// go back to MainMenuView as the eyes of the user
self.presentingViewController.dismissViewControllerAnimated(false, completion: nil);
}
/* let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let nextViewController = storyBoard.instantiateViewControllerWithIdentifier("MainScene") as! MainScene
self.presentViewController(nextViewController, animated:true, completion:nil)*/
}
func restGame(){
Data.score = 0
Data.GameHolder = 3
Data.GameStarted = 1
Data.PlayerLife = 3.0
Data.BonusHolder = 30
Data.BonusTimer = 0
}
func didPressClose()
{
self.self.dismissViewControllerAnimated(true, completion:nil)
}
override func shouldAutorotate() -> Bool {
return false
}
deinit{
print("GameOverView is being deInitialized.");
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Release any cached data, images, etc that aren't in use.
}
override func prefersStatusBarHidden() -> Bool {
return true
}
}
Bất kỳ lời đề nghị?
nó không hoạt động nó đưa ra một thông báo lỗi "Getter cho 'presentingViewController' với Objective-C selector xung đột 'presentingViewController' với getter cho 'presentingViewController' từ 'UIViewController' lớp cha với cùng chọn Objective-C" i cập nhật bài đăng của tôi để bạn có thể xem mã của tôi cho GameOverView – Michel
Trước hết, 'var presentingViewController: UIViewController! = self.presentViewController' bên ngoài một hàm không hoạt động, bạn cần khai báo nó và sau đó bên trong 'viewDidLoad' khởi tạo nó. Vấn đề của bạn là liên quan đến điều đó khi bạn khai báo 'presentingViewController' như một thuộc tính được lưu trữ,' UIViewController' tạo ra xung đột với 'presentingViewController' của riêng bạn, giải pháp: thay đổi tên. Đoạn mã trên được gọi bên trong một hàm để tránh các loại xung đột này. –
Cảm ơn sự giúp đỡ của nó trở lại MainMenu nhưng GameViewController không được loại bỏ nhưng bộ nhớ không được phát hành – Michel