Действия смахивания не работают в заголовке раздела - PullRequest
0 голосов
/ 22 мая 2019

Я использую swift 4.2 и xcode 10.1.Я работаю над проектом и создал какой-то необычный ULableView.

Все работает просто отлично и круто.Затем возникает необходимость ввести некоторые действия смахивания.Так что создать их здесь так просто, как я их использую и создаю

@available(iOS 11.0, *)
func tableView(_ tableView: UITableView, leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration?
{
    let deleteAction = UIContextualAction(style: .destructive, title: "Add") { (action, view, handler) in
        print("Add Action Tapped")
    }
    deleteAction.backgroundColor = .green
    let configuration = UISwipeActionsConfiguration(actions: [deleteAction])
    return configuration
}

@available(iOS 11.0, *)
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration?
{
    let deleteAction = UIContextualAction(style: .destructive, title: "Delete") { (action, view, handler) in
        print("Delete Action Tapped")
    }
    deleteAction.backgroundColor = .red
    let configuration = UISwipeActionsConfiguration(actions: [deleteAction])
    return configuration
}

Но это не работает в моих разделах.Строка получает действия, когда я могу провести пальцем влево или вправо.но нет в моем разделе заголовков.Вот как я создаю представление для заголовка моего раздела.

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {


    let cell = Bundle.main.loadNibNamed("HeaderCell", owner: self, options: nil)?.first as! HeaderCell

    let shoppingList = mDataSource[section]

    let itemCount = shoppingList.ShoppingItems.count

    let txtStoreName = shoppingList.Store.P_FriendlyName! + " (\(itemCount))"

    cell.lblName.text = txtStoreName

    let imageHollow  = UIImage(named: "checkbox_hollow") // For List Item Check box image

    cell.btnSelectHeader.setImage(imageHollow, for: .normal)

    if(shoppingList.IsSelected){
        let imageChecked  = UIImage(named: "checkbox_checked") // For List Item Check box image
        cell.btnSelectHeader.setImage(imageChecked, for: .normal)
    }



    if(shoppingList.IsExpanded){

        let image  = UIImage(named: "ic-indicator-up")

        cell.ivIndicatorExpandCollapse.image = image

        cell.viewContentView.backgroundColor = CommonUtils.hexStringToUIColor(hex: AppColors.colorItemSelector)


    }else{

        let image  = UIImage(named: "ic-indicator-down")

        cell.ivIndicatorExpandCollapse.image = image

        cell.viewContentView.backgroundColor = CommonUtils.hexStringToUIColor(hex: AppColors.colorWhite)
    }


    cell.backgroundView?.backgroundColor = UIColor.white

    cell.isCellSwipable = IS_CELL_RIGHT_SWIPEABLE
    cell.delegateHeader = self
    cell.clickedSection = IndexPath.init(row: 0, section: section)
    cell.clickedModel = shoppingList


    return cell

}

Проблемы: вот мои проблемы и вопросы

  • Заголовки разделов не показывают действия смахивания, как другие ячейки.
  • Доступны ли эти действия смахивания от iOS 11.0 до последней версии или она будет работать только на iOS 11?

Пожалуйста, помогите мне, я не уверен, почему он не работает над заголовками разделов ????

1 Ответ

0 голосов
/ 22 мая 2019

На данный момент iOS не позволяет перелистывать заголовки разделов.Я хотел бы рекомендовать использовать вашу собственную логику.Вы можете управлять, самостоятельно изменяя ограничения вида (вид по умолчанию или вид со сдвигом) для заголовка раздела.

   func sectionSwiped(gestureRecognizer: UITapGestureRecognizer) {

    if let viewSwiped = gestureRecognizer.view as? UIView{
        swipedSection = viewSwiped.tag
    }
}

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let vw = UIView()
    vw.tag = section
    //You can customize view
    var swipeRight = UISwipeGestureRecognizer(target: self, action: "sectionSwiped:")
    swipeRight.direction = UISwipeGestureRecognizerDirection.Right
    vw.addGestureRecognizer(swipeRight)
    return vw
}
...