Swift:Xcode 6.1.1 更改由代码块执行而不是按钮触发的视图
Posted
技术标签:
【中文标题】Swift:Xcode 6.1.1 更改由代码块执行而不是按钮触发的视图【英文标题】:Swift: Xcode 6.1.1 change views triggered by code block executions rather than buttons 【发布时间】:2015-02-03 20:56:25 【问题描述】:我正在开发一个适用于蓝牙设备的 ios 应用。我有一个带有回调函数的.swift
文件,每个回调函数都会更改我的变量state。每次 state 变化时,我都希望视图发生变化。我尝试过.instantiateViewControllerWithIdentifier
、sourceViewController.presentViewController(destinationViewController, animated: false, completion: nil)
,并进行了转场。当我谷歌时,我只找到使用UIButtons
和@IBAction
功能的解决方案。
如果有人知道如何更改由代码块执行而不是按钮触发的视图,我将不胜感激。下面是我的回调代码,并注释了触发场景切换的位置和内容。
enum State: String
case Inactive = "Inactive"
case Searching = "Searching"
case CheckingOut = "CheckingOut"
case InRental = "InRental"
case Returned = "Returned"
class RentalController: UIViewController, bleDelegate
var state = State.Inactive
var unlocked: Bool = false
var service = btDiscoverySharedInstance.bleService
override func viewDidLoad()
super.viewDidLoad()
func startBLE()
btDiscoverySharedInstance
btDiscoverySharedInstance.Bdelegate = self
service?.startDiscoveringServices()
state = State.Searching // Start at Home Screen
println(state.rawValue)
func devicefound()
service?.fireSolenoid()
state = State.CheckingOut // Change to Screen 1
unlocked = true
println(state.rawValue)
segment.perform()
func btnNotification(value: NSData)
let pBuffer: [Byte] = [0x00]
let rBuffer: [Byte] = [0x02]
let buttonPressed = NSData(bytes: pBuffer, length: pBuffer.count)
let buttonReleased = NSData(bytes: rBuffer, length: rBuffer.count)
if(value == buttonPressed)
state = State.InRental // Change to Screen 2
println(state.rawValue)
//viewDidAppear(false)
// Disconnect then reconnect
if(value == buttonReleased)
state = State.Returned // Change back to home screen
println(state.rawValue)
btDiscoverySharedInstance.disconnect()
【问题讨论】:
【参考方案1】:首先选择您要导航到的转场。在属性检查器中定义一些标识符。
在你的类中调用这个方法:
self.performSegueWithIdentifier("Identifier", sender: self)
【讨论】:
感谢您的建议,但这样做会引发我不明白的错误。 *** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“接收者(以上是关于Swift:Xcode 6.1.1 更改由代码块执行而不是按钮触发的视图的主要内容,如果未能解决你的问题,请参考以下文章
以编程方式更改由标签值对对象填充的 Dojo Form Select 的选定选项
更改由 sklearn.model_selection.train_test_split 产生的数组中的值类型