按下时UIButton不可选,并且在自定义UICollectionReusableView中不会偏移

时间:2017-12-03 16:46:10

标签: ios swift uibutton uicollectionreusableview

当我按下标题视图中的编辑按钮没有任何反应时,该按钮无法选择,我不知道为什么。

带编辑UIButton和按钮功能的自定义UICollectionReusableView。

class headerView: UICollectionReusableView {
var editProfile = UIButton()
func editBtnPressed(_ sender: UIButton) {

    let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    let vc : editVC = storyboard.instantiateViewController(withIdentifier: "search") as! editVC

    let navigationController =     UINavigationController(rootViewController: vc)

}


   override init(frame: CGRect) {
    super.init(frame: frame)


    addSubview(editProfile)

editProfile.translatesAutoresizingMaskIntoConstraints = false
  }
}

调用编辑UIButton函数的UICollectionViewController。

class homeVC: UICollectionViewController, UICollectionViewDelegateFlowLayout {

override func collectionView(_ collectionView: UICollectionView,  viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) ->  UICollectionReusableView {

    //define header
    let header =    collectionView.dequeueReusableSupplementaryView(ofKind: UICollectionElementKindSectionHeader, withReuseIdentifier: "Header", for: indexPath) as! headerView

    header.awakeFromNib()

    header.editBtn = editBtnPressed

    header.editProfile.addTarget(self, action: #selector(headerView.editBtnPressed(_:)), for: .touchUpInside)
  }
}

1 个答案:

答案 0 :(得分:0)

您手动调用awakeFromNib,但系统会自动调用它。如果被叫两次会引起像这样的奇怪问题,我不会感到惊讶。我尝试删除该手动调用,看看是否可以修复它。

此外,您创建editButton但不要将其框架设置在任何位置。我还会将你的addSubview调用从init移出,并在部分设置视图时进入awakeFromNib。