我的代码运行时没有任何错误,但它没有将按钮的标签传递给下一个活动
这是代码
class SecondViewController: UIViewController {
@IBOutlet weak var Properties: UIButton!
@IBOutlet weak var games: UIButton!
@IBOutlet weak var electronics: UIButton!
@IBOutlet weak var Vehicles: UIButton!
@IBOutlet weak var Accessories: UIButton!
@IBOutlet weak var searchTitle: UISearchBar?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
var pass:searchResultView = segue.destinationViewController as! searchResultView
if(electronics.selected){
if(searchTitle?.text != nil){
pass.tit = searchTitle?.text
}
pass.received = electronics.titleLabel!.text!
}
else if(games.selected){
if(searchTitle?.text != nil){
pass.tit = searchTitle?.text
}
pass.received = games.titleLabel!.text!
}
else if(Properties.selected){
if(searchTitle?.text != nil){
pass.tit = searchTitle?.text
}
pass.received = Properties.titleLabel!.text!
}
else if(Vehicles.selected){
if(searchTitle?.text != nil){
pass.tit = searchTitle?.text
}
pass.received = Vehicles.titleLabel!.text!
}
else if(Accessories.selected){
if(searchTitle?.text != nil){
pass.tit = searchTitle?.text
}
pass.received = Accessories.titleLabel!.text!
}
}
当我尝试在其他活动中打印字符串时,它什么都不打印
这是其他活动的代码
class searchResultView: UIViewController {
var received:String = ""
var tit:String? = nil
override func viewDidLoad() {
super.viewDidLoad()
println(received)
println(tit)
println("jsoidjf")
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
请任何人帮助我,我迷路了!
答案 0 :(得分:1)
您有两个选择
您需要在Interface Builder中设置segue的标识符,以检测哪一个被触发:
Attributes Inspector
并输入标识符
然后相应地将代码更改为:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
var pass:searchResultView = segue.destinationViewController as! searchResultView
if (segue.identifier == "electronicsSegue") {
/* choose the same identifier as in the attribute inspector */
if(searchTitle?.text != nil){
pass.tit = searchTitle?.text
}
pass.received = electronics.titleLabel!.text!
}
}
这个版本更容易执行,但不是很干净,检查触发的segue的发送者是否等于你的一个按钮:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
var pass:searchResultView = segue.destinationViewController as! searchResultView
let senderButton = sender as! UIButton
if(senderButton == electronics){
if(searchTitle?.text != nil){
pass.tit = searchTitle?.text
}
pass.received = electronics.titleLabel!.text!
}
}
两种解决方案输出
电子
可选("&#34)
jsoidjf
答案 1 :(得分:0)
添加此方法并尝试。创建@IBAction
方法
@IBAction func electronicsAction(sender: UIButton) {
self.performSegueWithIdentifier("PushToSearchViewController", sender: self)
self.electronics.selected = true
}
首先为segue提供标识符,我在这里只为电子按钮做。