2017-03-17 71 views
0

我有一个用户可以通过滑动来删除行的单元格的表格视图。无论何时我一次滑动两行(使用两个手指,每行一个),我都会收到一个fatal error: Index out of range错误。在努力尝试,以便只有一个电池在一次刷卡来改变这种行为Swift:如何防止两个表格单元被同时刷入?

override func viewDidLoad() { 
    ... 
    self.view.isMultipleTouchEnabled = false 
    self.view.isExclusiveTouch = true 
    self.ordersTable.isMultipleTouchEnabled = false 
    self.ordersTable.isExclusiveTouch = true 
    } 

,但一切都没有改变:

我已经在我的OrdersViewController添加了这4条线。我仍然可以在两个不同的行上使用两根手指同时来回滑动。

还有别的办法吗?

无论我在哪里放置它,IsExclusiveTouch和IsMultipleTouchEnabled都无法正常工作。我想知道它是否与我使用这个库有什么关系github.com/alikaragoz/MCSwipeTableViewCell

这也可能是因为我使用Firebase?

+3

表格视图中的“索引超出范围”通常意味着数据源方法中存在一些不一致。 –

+0

是你的问题*“如何防止两个表格单元格被同时刷入?”*或是是一个XY-问题,而你的真正问题是*“如何解决这个超出范围错误?”* - 如果它是后者,那么你应该显示你的数据源方法,以及关于致命错误的更多信息(它发生在哪里,什么是堆栈回溯,...) –

+0

我宁愿修复前者。不管我在哪里放置它,IsExclusiveTouch和IsMultipleTouchEnabled都无法正常工作。我不知道是否有任何与我使用这个图书馆https://github.com/alikaragoz/MCSwipeTableViewCell – Edmund

回答

0

第一手势的所有组代表,然后使用该委托,它可以帮助你:

override func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool { 
    return false; 
} 
0

我最终没有这一点,使用我使用的表格单元格荚提供的回调:

class OrderTableManager { 
    static var swiping = false 
} 

class OrderPreparingTableViewCell: MCSwipeTableViewCell, MCSwipeTableViewCellDelegate { 
    override func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool { 
    if !OrderTableManager.swiping { 
     OrderTableManager.swiping = true 
     return true 
    } else { 
     return false 
    } 
    } 

    // MARK: Public 
    func swipeTableViewCellDidEndSwiping(_ cell: MCSwipeTableViewCell!) { 
    OrderTableManager.swiping = false 
    } 

    func displayOrder(order: AppState.Order, clock: Clock, fDone: @escaping SwipeHandler, fDelete: @escaping SwipeHandler) -> OrderPreparingTableViewCell { 
    ... 

    self.delegate = self 

    ... 
    } 
相关问题