将我的自定义类的委托设置为我的视图控制器

伊曼·哈鲁特(Eman Harout)

我创建了一个自定义类,它是的子类UICollectionReusableView它本质上是一个Collection View的section标头,我在上面添加了一些按钮。当按下按钮时,我希望视图控制器过滤结果(取决于按下哪个按钮)。

我需要我的视图控制器为该自定义类提供一个出口,但是那没有用,因为Xcode抱怨具有类的重复内容(即使我只打算使用一个collectionView节头)。因此,我的下一个选择是委派。

我的问题有两个:

  1. 如何将自定义类的委托设置为视图控制器?通常情况下,我将委托设置在其中,prepareForSegue但是由于没有代理,我不确定该怎么做。我的视图控制器是在情节提要中创建的,而我的自定义类没有对其的引用。即使在我的View Controller中,我也无法访问集合视图的节标题以将其委托设置为self(我检查了Apple的文档,没有任何属性可以访问节标题)。

  2. 在将IBActions设置为自定义类时,如何确保被点击的按钮也作为发送者传递进来?我已经将按钮之一连接到一个动作上并编写了代码,func someAction (sender: AnyObject) {}但是程序如何知道按钮本身应该作为发送者传递呢?

这是我的代码:

// Custom Class
class CollectionHeaderView: UICollectionReusableView {

    @IBAction func buttonPressed (sender: AnyObject) {
        **delegate?.didTapButton(self)**
    }
    var delegate: UICollectionViewDelegate?
}


// Protocol
protocol CollectionHeaderViewDelegate {
    func didTapButton(sender: CollectionHeaderView)
}

// View Controller (the delegate)
func collectionView(collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView {
        let headerView = collectionView.dequeueReusableSupplementaryViewOfKind(kind, withReuseIdentifier: "CollectionHeaderView", forIndexPath: indexPath) as! CollectionHeaderView
        headerView.delegate = self
        return headerView
    }

extension BrowseViewController: CollectionHeaderViewDelegate {
    func didTapButton(sender: CollectionHeaderView) {
        print("Delegate's Button Tapped")

    }
}

粗体部分是Xcode给我的错误提示,“类型为UICollectionViewDelegate的值没有成员'Did Tap Button'”-不知道为什么要引用UICollectionViewDelegate。 headerViewDelegate的委托,但仍然给出错误。

马特

如果此UICollectionReusableView是集合视图的部分标题,则可以在代码中创建它。您将需要实施collectionView:viewForSupplementaryElementOfKind:atIndexPath:那时,您(视图控制器)正在创建节标题,并可以按照您喜欢的任何方式对其进行配置。

或者,如果此UICollectionReusableView是由情节提要中的流布局创建的,则将按钮放入情节提要中,然后像往常一样连接它们的动作。

在此处输入图片说明

但是程序如何知道按钮本身应该作为发送者传递

当点击按钮并触发其控制事件操作时,总是将按钮本身作为参数提供。这是一个控制哪一部分

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用绑定将我的自定义名称服务器设置为我的域

来自分类Dev

从自定义类调用视图控制器方法

来自分类Dev

无法为表视图控制器(UITableViewController)选择自定义类

来自分类Dev

我可以继承自定义视图控制器吗

来自分类Dev

我可以对自定义视图控制器进行子类化吗

来自分类Dev

当我单击按钮 Rails 时,从视图中调用自定义控制器操作

来自分类Dev

实体在我的视图控制器中为nil,但不是应用程序委托

来自分类Dev

我如何使用默认动画而不是自定义关闭过渡动画来关闭模态视图控制器

来自分类Dev

为我的变量编写自定义设置器-Swift

来自分类Dev

为我的变量编写自定义设置器-Swift

来自分类Dev

表格视图到自定义视图控制器?

来自分类Dev

如何调用我的自定义警报控制器功能以在其他视图控制器中显示?

来自分类Dev

使用自定义标签栏控制器类在两个视图控制器之间传递数据

来自分类Dev

为什么没有为Jersey控制器检测到我的Aspect(使用自定义注释)?

来自分类Dev

无法将我的自定义 NSView 设置为第一响应者

来自分类Dev

如何从类本身内部初始化自定义视图控制器?

来自分类Dev

UITapGestureRecognizer在自定义类中不起作用(不是视图控制器)

来自分类Dev

如何在视图控制器的背景中设置自定义颜色

来自分类Dev

在导航控制器中第二次单击后,ios自定义委托为null

来自分类Dev

用自定义动画关闭视图控制器?

来自分类Dev

获取Ember视图的自定义控制器

来自分类Dev

页面视图控制器:自定义页面滑块

来自分类Dev

iOS自定义视图或导航栏控制器

来自分类Dev

获取Ember视图的自定义控制器

来自分类Dev

页面视图控制器:自定义页面滑块

来自分类Dev

拆分视图控制器-自定义UITableViewCell

来自分类Dev

自定义输入视图控制器

来自分类Dev

与视图控制器内的自定义 UIView 交互

来自分类Dev

当我将视图控制器从堆栈中弹出时,按下后退按钮会丢失我的自定义UIToolBar

Related 相关文章

  1. 1

    使用绑定将我的自定义名称服务器设置为我的域

  2. 2

    从自定义类调用视图控制器方法

  3. 3

    无法为表视图控制器(UITableViewController)选择自定义类

  4. 4

    我可以继承自定义视图控制器吗

  5. 5

    我可以对自定义视图控制器进行子类化吗

  6. 6

    当我单击按钮 Rails 时,从视图中调用自定义控制器操作

  7. 7

    实体在我的视图控制器中为nil,但不是应用程序委托

  8. 8

    我如何使用默认动画而不是自定义关闭过渡动画来关闭模态视图控制器

  9. 9

    为我的变量编写自定义设置器-Swift

  10. 10

    为我的变量编写自定义设置器-Swift

  11. 11

    表格视图到自定义视图控制器?

  12. 12

    如何调用我的自定义警报控制器功能以在其他视图控制器中显示?

  13. 13

    使用自定义标签栏控制器类在两个视图控制器之间传递数据

  14. 14

    为什么没有为Jersey控制器检测到我的Aspect(使用自定义注释)?

  15. 15

    无法将我的自定义 NSView 设置为第一响应者

  16. 16

    如何从类本身内部初始化自定义视图控制器?

  17. 17

    UITapGestureRecognizer在自定义类中不起作用(不是视图控制器)

  18. 18

    如何在视图控制器的背景中设置自定义颜色

  19. 19

    在导航控制器中第二次单击后,ios自定义委托为null

  20. 20

    用自定义动画关闭视图控制器?

  21. 21

    获取Ember视图的自定义控制器

  22. 22

    页面视图控制器:自定义页面滑块

  23. 23

    iOS自定义视图或导航栏控制器

  24. 24

    获取Ember视图的自定义控制器

  25. 25

    页面视图控制器:自定义页面滑块

  26. 26

    拆分视图控制器-自定义UITableViewCell

  27. 27

    自定义输入视图控制器

  28. 28

    与视图控制器内的自定义 UIView 交互

  29. 29

    当我将视图控制器从堆栈中弹出时,按下后退按钮会丢失我的自定义UIToolBar

热门标签

归档