簡體   English   中英

如何在視圖控制器之間正確選擇

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM