IBOutlet 和 IBAction 的名称冲突?

Posted

技术标签:

【中文标题】IBOutlet 和 IBAction 的名称冲突?【英文标题】:Conflicting names of IBOutlet and IBAction? 【发布时间】:2015-01-01 19:19:20 【问题描述】:

我有以下从 UICollectionViewCell 类到情节提要单元格中的按钮的引用。点击按钮不会触发“setFavorite”。

class StationCollectionViewCell: UICollectionViewCell 

    @IBOutlet weak var favorite: UIButton!

    @IBAction func setFavorite(sender: AnyObject) 
       println("Button clicked")
    

但是,当我将动作函数或插座变量的名称更改为其他名称(例如“setAsFavorite”或“favoriteButton”)时,它会起作用。

Swift 的 xCode 是否有一些“魔法”阻止我同时拥有一个名为“favorite”的出口和一个名为“setFavorite”的动作

【问题讨论】:

【参考方案1】:

魔法属于 NSObject。一个名为favourite 的属性有两个访问器方法:favourite,它返回属性值,setFavourite:,它设置值。使用上面的代码,您打破了这个假设,这就是更改方法名称有效的原因。

【讨论】:

以上是关于IBOutlet 和 IBAction 的名称冲突?的主要内容,如果未能解决你的问题,请参考以下文章

快速,为啥我必须使用 IBaction 或 IBOutlet 在代码和 UI 之间进行通信?

在代码中将 UIButton 连接到 IBOutlet 和 IBAction

当我连接 IBOutlet 时,IBAction 停止工作

如何在不使用助手编辑器的情况下将 IBOutlet 和 IBAction 连接到视图控制器

@IBOutlet和@IBAction指的是错误的项目,如何摆脱那些引用?

在使用分配的 IBAction (UIButton) 点击 IBOutlet 后,iOS 应用程序崩溃,没有任何异常