我在尝试使用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开始的app delegate行...."
当我取消注释包含performSegue ...方法的方法时,所有输出日志都会显示 "(LLDB)"它仍然突出显示应用代表行
答案 0 :(得分:1)
您是否尝试删除按钮的手动IBAction代码并仅使用故事板上的segue?如果您同时使用Storyboard和Class文件,它可能会尝试同时进行两次。
编辑:我的工作示例中的两个视图控制器的所有代码
First View Controller:
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类中有一个动作。