[英]How to properly segue between view controllers
在嘗試使用Objective-C和現在的Swift時,我遇到了這個問題。 我創建一個視圖控制器(vc1),將其嵌入導航控制器,然后最終創建一個新的視圖控制器(vc2)。 然后,我在vc1上放了一個按鈕,並控制將其拖到vc2。 我運行了該應用程序,一切正常,單擊按鈕將把新的視圖控制器推到堆棧上,然后按返回按鈕將我帶回去。 但是,一旦我繼續向vc2添加新的按鈕和文本字段,則一旦我按vc1上的原始按鈕(將應用程序委托文件的第一行作為斷點),該應用程序就會崩潰。 我嘗試了很多事情,即嘗試使用self.performSegueWithIdentifier方法對segue進行編碼,但是它不起作用。 我正在使用Xcode 6。
storyboard.swift(vc1文件):
import UIKit
class storyboard: UIViewController {
@IBOutlet var titleLabel : UILabel
@IBOutlet var orLabel : UILabel
@IBAction func weightedAverageButtonPressed(sender : AnyObject) {
self.performSegueWithIdentifier("weightedAverage1", sender: self)
}
@IBAction func whatINeedButtonPressed(sender : AnyObject) {
}
}
weightedAverage.swift(vc2)(我已注釋掉所有內容以擺脫崩潰,但沒有運氣):
import UIKit
class weightedAverage: UIViewController {
/* @IBOutlet var weightAverageTitleLabel : UILabel
@IBOutlet var percentagetoCalcLabel : UILabel
@IBOutlet var percentageLabel : UILabel
@IBOutlet var percentageInput : UITextField
@IBAction func continueButton(sender : AnyObject)
{
//var percent = percentageInput.text
// percentageLabel.text = percent
}*/
}
appdelegate.swift:
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
return true
}
}
這是調試輸出的內容(當我注釋掉IBAction方法時):
2014-06-19 12:29:12.471 gradeCalc [13217:580024]-[_ TtC9gradeCalc10storyboard weightedAverageButtonPressed:]:無法識別的選擇器已發送到實例0x10bb0ad30(lldb)
它還突出顯示了從“類AppDelegate ....”開始的應用程序委托行。
當我取消注釋包含performSegue ...方法的方法時,所有輸出日志都顯示“(lldb)”,它仍然突出顯示了應用程序委托行
您是否嘗試過刪除按鈕的手動IBAction代碼,而僅使用情節提要上的標記? 如果您都同時使用情節提要和Class文件,則可能嘗試同時進行兩次篩選。
編輯:在我的工作示例中的兩個視圖控制器的所有代碼
第一視圖控制器:
class OneViewController: UIViewController {
@IBOutlet var label1: UILabel
@IBOutlet var label2: UILabel
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
第二視圖控制器:
class TwoViewController: UIViewController {
@IBOutlet var upperlabel: UILabel
@IBOutlet var lowerlabel: UILabel
@IBOutlet var textbox: UITextField
@IBAction func button(sender: AnyObject) {
var percent = textbox.text
lowerlabel.text = percent
}
override func viewDidLoad() {
super.viewDidLoad()
}
由於NDA而無法添加圖像,但Storyboard只是NavigationController> VC1> VC2,每個VC中都有兩個標簽,VC2中有一個文本框,每個中都有一個按鈕。 只有第二個按鈕在其VC類中具有操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.