2013-07-25 35 views
0

我有一個視圖有7個tableView代表一週的7天。每個的tableView被初始化標籤從0到6我做的細胞longPressure識別器來獲得訪問權的tableView:當我按標籤顯示正確的電池tableView標記錯誤moveRowAtIndexPath方法後

- (IBAction)longPress:(UIGestureRecognizer *)sender { 
    self.clickedPoint = [sender locationInView:self.view]; 

    // get most down subView user clicked 
    UIView *clickedSubView = [self.view hitTest:self.clickedPoint withEvent:nil]; 

    if([clickedSubView.superview isKindOfClass:[customCell class]]) { 

     // get selected tableView 
     UITableView *selectedTableView = (UITableView*)clickedSubView.superview.superview; 

     NSLog(@"Selected tag: %d", selectedTableView.tag); 
    } 
} 

。問題是當我在tableView中移動行時。當我做moveRowAtIndexPath:在tableView和longPress中,我創建moveRow的tableView的標籤總是獲得另一個tableView的最後一個longPress的標籤。

實施例:

我moveRow在表與標籤2然後,只需長按表與標籤5.然後返回到標籤2的長按表,但是這一次將(之前的一個)日誌標籤= 5。如果longPress表的標籤爲1,則返回longPress「標籤2的表格」(假設爲),並記錄標籤1,它應該是標籤2的地方。

我讀過beginUpdates使標籤丟失並且這是重新加載所必需的。所以我試過這個:

// reload the tableView after moveRowAtIndexPath method 
selectedTableView reloadData]; 

// also tried refresh the view that contains all the tableViews 
[[self getWeekView] setNeedsDisplay]; 

// and also tried to set the tag again after moveRowAtIndexPath method 
selectedTableView.tag = index; 

沒什麼用。我還懷疑是否發生了clickedSubView事件,如果我正在獲得正確的hitTest視圖,但是我用彩色邊框測試了它,它獲得了正確的視圖,只有在moveRowAtIndexPath方法後面有錯誤的標記。

謝謝大家!

回答

1

如果您使用自定義單元格的tableviews,我想你正在使用然後只是添加一個標籤上的自定義單元格,或者如果你不想顯示該標籤,然後保持隱藏。 (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath方法,只有你設置標籤標籤,所以你不會得到這個問題的標籤。

+0

謝謝! – lopes710

+0

@Aniket Kote你能告訴我,什麼時候應該爲自定義單元的標籤設置值?如果我將索引位置4的行移動到0,那麼標籤將更改爲索引4行。 – Ganesh

0

如果您想獲取長時間按下的表格視圖,請將手勢識別器添加到表格視圖本身(而不是單元格)。然後您可以通過sender.view請求查看。如果你需要的話,你仍然可以進行命中檢測以獲得實際上已經很長時間的視圖。

+0

我還應該提到,我將長按應用於單元格,因爲我將它用於其他材料。對不起,在 – lopes710

+0

之前沒有提及什麼是「其他的東西」?從表格到單元格比其他方式更容易。 – Wain

+0

longPress應用於mainView,因爲它的內容發生了變化,但有一些共同的內容。我有這個mainViewController它獲取與不同的內容一起工作的longPress方法識別器。所以這就是我爲什麼要根據目前的內容對已識別的longPressed視圖進行「轉型」的原因 – lopes710