如何在swift中的segue之后传递一个按钮标签

时间:2016-08-18 00:43:01

标签: ios swift uibutton segue

我想使用一个按钮的标题来启动一个segue作为另一个按钮的标题出现在视图中。在第一个视图中,我创建了包含在名为Table的数组中的4个按钮。  然后在第二个视图中我只有一个按钮,其标题是触发segue的按钮的名称。以下是我所做的快速概述

@IBOutlet var Table: [UIButton]!
@IBAction func commanderSegue(sender: AnyObject?) {

    performSegueWithIdentifier("commander", sender: nil)

    print("it works!") }
    override  func prepareForSegue(segue:UIStoryboardSegue, sender:AnyObject?){    
if segue.identifier == "commander" {

    print("we can order!")
        if let nextVC: OrderViewController = segue.destinationViewController as? OrderViewController {

          if let buttonTitle = sender as? UIButton.currentTitle {

            nextVC.tablex.titleLabel.text = buttonTitle

        print("Miam!")
             }  
        }
}

但它告诉我'当前的标题不是UIButton的成员类型。我该如何解决?感谢任何可以提供帮助的人。

2 个答案:

答案 0 :(得分:2)

三件事:

  1. 您应该将UIButton作为sender commanderSegue传递给@IBAction。您知道自己的UIButton已与某个按钮相关联,因此请将其类型更改为nil,并将sender替换为performSegueWithIdentifier来电中的performSegueWithIdentifier("commander", sender: sender)

    prepareForSegue
  2. sender中,有条件地将UIButton强制转换为currentTitle,然后在其上调用if let buttonTitle = (sender as? UIButton)?.currentTitle {

    @IBOutlet
  3. destinationViewController中的prepareForSegue未在buttonTitle时间设置。要解决此问题,请将按钮的标题保存到名为UILabel的destinationViewController中的属性,然后将其分配给destinationViewController中viewDidLoad中的var buttonTitle = "" override func viewDidLoad() { super.viewDidLoad() tablex.titleLabel.text = buttonTitle }

    @IBOutlet var Table: [UIButton]!
    @IBAction func commanderSegue(sender: UIButton) {
    
        performSegueWithIdentifier("commander", sender: sender)
    
        print("it works!")
    }
    
    override func prepareForSegue(segue:UIStoryboardSegue, sender:AnyObject?) {    
        if segue.identifier == "commander" {
    
            print("we can order!")
            if let nextVC = segue.destinationViewController as? OrderViewController {
    
                if let buttonTitle = (sender as? UIButton)?.currentTitle {
    
                    nextVC.buttonTitle = buttonTitle
    
                    print("Miam!")
                }  
            }
        }
    }
    
  4. {{1}}

答案 1 :(得分:1)

按钮的标签为import urllib2 urlForCookie = 'http://fundamentus.com.br/graficos.php?papel=CMIG4&tipo=2' urlForImage = 'http://fundamentus.com.br/graficos3.php?codcvm=2453&tipo=108' initialRequest = urllib2.Request(urlForCookie) siteCookie = urllib2.urlopen(req1).headers.get('Set-Cookie') imageReq = urllib2.Request(urlForImage) imageReq.add_header('cookie', siteCookie) with open("image2.pny",'w') as f: f.write(urllib2.urlopen(req2).read()) f.close()

titleLabel

在你的第二个VC中,你需要:

let button = sender as! UIButton
if let buttonTitle = button.titleLabel!.text {
    nextVC.buttonText = buttonTitle // Assign the label text to a variable in the next viewController
}

然后您可以将其分配给下一个vc的按钮标题:

var buttonText: String!