2017-03-17 72 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 

    ... 
    } 
相關問題