UIButton 在单独的类中调用

Posted

技术标签:

【中文标题】UIButton 在单独的类中调用【英文标题】:UIButton Call in separate Class 【发布时间】:2016-10-08 23:25:20 【问题描述】:

我正在使用可扩展的 tableView。其中一个单元格将用于在 safari 中打开 URL 链接的按钮。按钮 IBOulet 在 WebsiteCell 类中,数据和视图控制器在 Detail View 中。

在详细视图类中,我在尝试调用显示为websiteCell.venueURL(UIButton) 的按钮时出错。错误显示“通话中的额外参数”。

这里应该用什么来代替 UIButton?

WebsiteCell 类

class WebsiteCell: UITableViewCell 



@IBAction func venueURL(sender: UIButton) 



详细视图类

else if indexPath.row == 3 
        let websiteCell = tableView.dequeueReusableCellWithIdentifier("websiteCell") as! WebsiteCell

        let venueURL = venues!["URL"] as! String



        websiteCell.venueURL(UIButton)
            UIApplication.sharedApplication().openURL(NSURL(string: venueURL)!)



        

【问题讨论】:

【参考方案1】:

我会将情节提要中的按钮添加到 websiteCell 类型的原型单元格中。然后您可以将此按钮作为@IBAction 链接到您的websiteCell 类,打开URL 的代码应该放在IBAction 中。

class WebsiteCell: UITableViewCell 

    var venueURL: String?

    @IBAction func venueURL(sender: UIButton) 
        UIApplication.sharedApplication().openURL(NSURL(string: venueURL)!)
    


然后,您的 cellForRowAtIndexPath 方法将如下所示:

else if indexPath.row == 3 

    let websiteCell = tableView.dequeueReusableCellWithIdentifier("websiteCell") as! WebsiteCell

    websiteCell.venueURL = //url here

    return websiteCell


【讨论】:

以上是关于UIButton 在单独的类中调用的主要内容,如果未能解决你的问题,请参考以下文章

从 UIButton 的类中获取当前的 UIViewController

从不同的类更改 UIButton alpha

通过 UIButton 选择一个单元格 - CollectionViewCell - Swift

uibutton 添加目标选择器方法在调用类而不是在被调用类中调用

带有在另一个类中声明的 pushViewController 的 UIButton

未调用 UIButton 选择器