IBOutlet-UIButtons的UICollectionview无法正常工作

时间:2015-05-26 14:40:31

标签: ios objective-c uibutton uicollectionview iboutlet

我向你们所有人提出了两天的脑力问题:

我通过使用UICollectionView(一行,水平滚动,固定数量的9个项目)在我的应用程序中集成了一个菜单。每个单元格都有自己的标记,并使用自己的原型单元格和自己的标识符。在cellForItemAtIndexPath期间,我将原型单元格分配给每个单元格(原型单元格包含故事板中的特定UIButton)。如果你单击一个单元格(相应的UIButton),一个弹出窗口应该打开(这很好用,因为弹出窗口锚定到集合视图而不是单元格 - 否则Xcode会出错,因为出口绑定到重复内容)。现在回答问题:

  1. 根据弹出窗口中的选定值,按钮的名称(titleLable.text)应该更改。我认为,IBOutlet是必需的,但不可用,因为可能(但没有发生)多次(重新)使用该单元格。

  2. APP中的其他一些操作可能会随机发生,这会更改按钮的标签。因此,我认为也需要IBOutlet。

  3. 我试图给原型一个特定的标签,但是这个(在我看来)无法使用,因为在加载过程中我无法将标签分配给UIButton,因为并非所有单元都可见,因此无法访问在viedDidAppear ...

    感谢任何帮助。这是一个旧问题的新尝试和collectionView直到昨天看起来很有希望。有什么想法要帮忙吗?非常感谢。我无法提供代码,因为90%的工作都是在IB中完成的。

1 个答案:

答案 0 :(得分:0)

您可以使用NSNotificationCenter将消息从UIPopoverController发送到UICollectionViewCell。

Send and receive messages through NSNotificationCenter in Objective-C?

只需将UICollectionViewCell子类化为MyCollectionViewCell并在UICollectionView中使用您的子类。

使用-(void)initWithFrame:(CGRect)frame MyCollectionViewCell方法,您应该以{{1​​}}的观察者身份订阅,并在NSNotificationCenter中取消订阅。

超过所有细胞可能会收到通知并对其作出反应。 这不是接收回调的最佳方式,但可能是最简单的。