Ios 如何在视图控制器之间正确切换
我在尝试objective-c和Swift时遇到了这个问题。我创建了一个视图控制器(vc1),将其嵌入导航控制器,然后最终创建了一个新的视图控制器(vc2)。然后,我在vc1上放置一个按钮,并控制将其拖动到vc2。我运行应用程序,一切都很好,点击按钮将把新的视图控制器推到堆栈上,按下后退按钮将使我返回。但是,一旦我继续向vc2添加新按钮和文本字段,一旦我按下vc1上的原始按钮,应用程序将崩溃,引用应用程序代理文件的第一行作为断点。我尝试了很多方法,即尝试使用self.performsguewithidentifier方法对segue进行编码,但它不起作用。我使用的是Xcode 6 storyboard.swift(vc1文件): weightedAverage.swift(vc2)(为了摆脱崩溃,我已经对所有内容进行了注释,但没有运气): appdelegate.swift:Ios 如何在视图控制器之间正确切换,ios,swift,Ios,Swift,我在尝试objective-c和Swift时遇到了这个问题。我创建了一个视图控制器(vc1),将其嵌入导航控制器,然后最终创建了一个新的视图控制器(vc2)。然后,我在vc1上放置一个按钮,并控制将其拖动到vc2。我运行应用程序,一切都很好,点击按钮将把新的视图控制器推到堆栈上,按下后退按钮将使我返回。但是,一旦我继续向vc2添加新按钮和文本字段,一旦我按下vc1上的原始按钮,应用程序将崩溃,引用应用程序代理文件的第一行作为断点。我尝试了很多方法,即尝试使用self.performsguewit
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等级计算[13217:580024]-[[u ttc9gradecalc10情节提要权重平均按钮按下:]:发送到实例0x10bb0ad30的无法识别的选择器
(lldb)
它还突出显示了从“类AppDelegate…”开始的应用程序委托行
当我取消注释包含performsgue的方法时。。。方法所有输出日志都显示
“lldb”并且它仍然突出显示了app delegate的行您是否尝试过删除按钮的手动iAction代码,而只是使用故事板上的segue?如果同时使用故事板和类文件,则可能会同时尝试两次分段 编辑:我工作示例中两个视图控制器的所有代码 第一视图控制器:
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()
}
第二视图控制器:
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,无法添加图像,但故事板只是NavigationController>VC1>VC2,每个VC中有两个标签,VC2中有一个文本框,每个VC中有一个按钮。只有第二个按钮在它的VC类中有一个动作。所以…你有一个名为<代码>情节提要的视图控制器?是的,初始视图控制器名为情节提要要调试崩溃,请设置一个异常断点,请参见此处的操作方法:一旦完成此操作,您可以将异常粘贴到您的问题中,我们可以更好地帮助您。^我已编辑此帖子以包含调试输出,谢谢。序列图像板中名为:weightedAverage1的序列标识符是否在序列图像板中?如果它以相同的方式大写,并且视图控制器的类在序列图像板中设置为序列图像板,我想不出还有什么别的办法。抱歉,我帮不上什么忙。所以我重新创建了你的项目,但在按你的方式设置时也遇到了同样的错误。我不知道为什么,但按此顺序操作不会导致错误:创建视图和导航控制器,然后添加所有按钮和标签,然后将vc1上的按钮连接到vc2(在故事板上,无代码),然后将每个视图的类更改为自定义类,然后为标签/文本框添加插座。因此,我建议尝试重新创建视图,首先添加元素并确保它运行,连接它们,确保它运行,然后逐步完成这项工作假定这项工作可行,在连接所有视图之前,我是否必须在我的应用程序中创建我想要的每个视图?你可以尝试在情节提要的两个视图上重置默认类,然后重新制作按钮以在它们之间切换。以后您应该仍然能够添加到视图中,希望这不会影响您所创建的每个视图。但是Xcode 6几乎不可靠