代码之家  ›  专栏  ›  技术社区  ›  Buddy

如何在segue的结构中使用UIbutton

  •  0
  • Buddy  · 技术社区  · 7 年前

    我对斯威夫特和苹果非常陌生,如果这是一个糟糕的问题,我很抱歉。 im使用表格视图和xib文件填充单元格。我需要在单元格中设置一个按钮,以切换到viewcontroller,并将Int传递给全局值。我知道你不能用func来做这个。那么正确的方法是什么? 下面是我试过的

     struct scale {
        let cell : Int!
        let name : String
        let og : String
        let fg : String
        let abv : String
        let date : String
        let image : UIImage
        let button : UIButton
    }
    
    
    
    class TableViewController: UITableViewController {
    
        var scaleView1 = [scale]()
    
    
        override func viewDidLoad() {
            scaleView1 = [scale(cell : 1, name : "test1", og : "11", fg : "11", abv : "11", date : "11-11-1111", image:  imageLiteral(resourceName: "live-preview-potato"),button : segueFunc(i: 0)),
                          scale(cell : 1, name : "test2", og : "22", fg : "22", abv : "22", date : "22-22-2222", image:  imageLiteral(resourceName: "live-preview-potato")),
                          scale(cell : 1, name : "test23", og : "232", fg : "223", abv : "223", date : "322-22-2222", image:  imageLiteral(resourceName: "live-preview-potato")),
                          scale(cell : 1, name : "test1", og : "11", fg : "11", abv : "11", date : "11-11-1111", image:  imageLiteral(resourceName: "live-preview-potato"))]
    
        }
    
        func segueFunc(i: Int){
            performSegue(withIdentifier: "ViewController2", sender: nil)
            thing = i
        }
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Arrabidas92    7 年前

    欢迎来到IOS开发世界。视图和控制器之间通信的常见方式是 目标/行动 概念在您的示例中,您希望以UIButton(=视图)为目标,并通过单击此按钮(=控制器处理的操作)执行一个序列。在主要解释之后,您需要:

    1. 将UIButton添加到自定义单元格。
    2. button.addTarget(target: self, action: #selector(segueFunc), for controlEvents: .touchUpInside) . 所以你是说,请把我,这个按钮,作为行动的目标 segueFunc 当发生touchUpInside事件时(=当用户单击它时)

    3. 实现您的功能 像你一样但是 无法传递任何参数 :
      func segueFunc(){ performSegue(withIdentifier: "ViewController2", sender: nil) }

    4. 最后,您需要实现该功能 prepare 准备转换到下一个视图控制器。在这种方法中,您将传递int之类的数据以及您想要的任何数据: func prepare(for segue:UIStoryboardSegue, sender: Any?)