无法从 xib 将 IBAction 连接到表视图

Posted

技术标签:

【中文标题】无法从 xib 将 IBAction 连接到表视图【英文标题】:Cannot connect IBAction to table view from xib 【发布时间】:2015-08-02 19:19:53 【问题描述】:

我在 swift https://github.com/uacaps/PageMenu 中将这个开源框架用于我的视图控制器。

我将 xib 用于 tableview 单元格和 tableview,如演示项目中所示。

但是,当我将我的按钮从 tableview 单元格连接到 table view 控制器时,Xcode 不会让我这样做。我正在处理 NotificationTableViewCell 和 NotificationTableVC 文件。

我已经正确设置了项目,并且可以启动和运行单元以及项目本身。但是,如果我无法获得连接按钮,我将无法添加所需的功能。

当我从存储库中克隆一些时,演示项目也有这种行为。我查看了这些问题,似乎没有人提到任何关于将 IBActions 连接到视图的内容,所以我做了,但我认为我缺少一些东西。

我附上了屏幕截图以帮助您了解我的问题。我还需要访问 cellForRowIndexPath。

我的 xib 被赋予了我的表格视图单元格的类,它仍然不允许我与表格视图控制器进行交互。

【问题讨论】:

【参考方案1】:

好的,所以我想出了一个可行的解决方案。感谢 Gurtej Singh。

代码如下:

1) 我在cellForRowIndexPath中添加了这一行

cell.mybutton.addTarget(self, action: "declineRequest:", forControlEvents: .TouchUpInside)

2) 现在,如果我编写一个名为 declineRequest 的函数,我就可以访问按钮了

由于我想根据单元格的数据删除单元格,因此我使用此函数并添加 Parse 查询逻辑。

 func declineRequest(sender: UIButton) 
    var cell: NotificationsTableViewCell = sender.superview!.superview as! NotificationsTableViewCell
     .... 

【讨论】:

【参考方案2】:

我认为您无法通过 IB 将表格视图单元格元素连接到表格视图控制器类(据我所知,这样做也不正确,因为会有多个单元格和可重用性)。

将 IB 中的元素连接到您的 Cell 类 (.h/.m),如果没有,请创建一个,例如 NotificationTableViewCell.m,然后从 Table View 中的委托方法访问连接的元素控制器类。

希望这会有所帮助。

【讨论】:

Gurtej Singh,看起来您知道您在说什么,您能否详细说明一下步骤列表,因为我还没有完成此程序。可以只用一个 .swift 文件来完成吗?一旦我制作了它们,tableview 控制器如何访问它?就像您提到“然后从您的 Table View 控制器类中的委托方法访问连接的元素”一样。 当然,请按照以下步骤操作,我在 Obj-C 中工作,但我确信类似的步骤也适用于 Swift: 1. 创建一个名为 NotificationTableViewCell 的新类,并为其提供 UITableViewCell 的基类. 2. 进入您的单元格 .xib 并在右侧面板(第 3 个选项卡)中给它一个 NotificationTableViewCell 类。 3. CTRL-将您的元素拖到新的 .m/.h 文件中,同时打开两个文件,可以称之为 closeButton 。 4. 在创建单元格的表格视图控制器中访问您的元素,方法应该是 cellForRowAtIndexPath,例如。单元格.closeButton。让我知道它是否有帮助。谢谢。 Gurtej,如果你看一下屏幕截图,我确实有一个 NotificationTableViewCell 类,我也可以连接 IBActions 和 Outlets,你建议再做一个吗?只要确保 对不起,你是对的,我也看到了一个 .swift 类。连接到那个。但请确保执行第 2 步。 是的,如果你看一下单元格下的第一个屏幕截图,我已经很快有了,我可以很好地连接我的 Outlets,我希望能够为 tableviewcontroller 连接 IBActions 来更新行,具体取决于如果他们点击了检查或 x 按钮。

以上是关于无法从 xib 将 IBAction 连接到表视图的主要内容,如果未能解决你的问题,请参考以下文章

将 IBAction 连接到自定义类

条形按钮项目能否同时连接到 IBAction 和 StoryBoard 到模态视图控制器?

将 xib 创建的单元格中的按钮连接到选项卡式视图应用程序中的视图

切换 XIB 视图 - Cocoa Mac

无法将 UITableViewController 连接到在 xib 中创建的 UITableView

使用通过 ViewController 从 XIB 加载的子视图中的对象时出错