2014-05-08 80 views
3

我已經爲UITableView實現了自定義標題部分。 在Header的自定義視圖中有一個按鈕,我想要獲取該按鈕點擊動作的那個部分的索引。iOS - TableView - 獲取攻絲按鈕上的標題部分索引

我可能會作爲

CustomHeader *view = (CustomHeader*)btnObject.superView; 

但是從這個headerView的例子中,我怎麼能得到那款IndexPath或索引試試?

編輯: 我需要的東西是獨立於標籤或您需要使用標籤的任何事情只是類似indexpath的細胞如下

-(NSIndexPath*)indexPathFromSenderView:(UIView*)view{ 

    CGPoint center= view.center; 
    CGPoint rootViewPoint = [view.superview convertPoint:center toView:self.tblMainContainer]; 
    NSIndexPath *indexPath = [self.tblMainContainer indexPathForRowAtPoint:rootViewPoint]; 
    return indexPath; 
} 
+0

您可以將標籤分配到自定義標題視圖並獲取當按鈕被按下時。 – Yogi

+0

不,但如果我們刪除該部分呢?那麼會出現不一致。 – Mrug

+0

重新載入表'viewForHeaderInSection:'將再次被調用,因此標籤將被重新分配。因此,如果在刪除該部分後重新加載表格,它應該可以工作。 – Yogi

回答

8
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{ 

    // create custom header here 

    // set up a button method 
    [yourButton addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside]; 

    // set the button tag as section 
    yourButton.tag = section; 

    return yourCustomHeaderWithButton; 
} 


later 


-(void)buttonAction:(id)sender{ 

    UIButton *clickedButton = (UIButton*)sender; 
    NSLog(@"section : %i",clickedButton.tag); 

} 
+0

但是如果該部分將被刪除,那麼它將創建崩潰。 – Mrug

+0

第一個測試它,讓我知道。它將工作,即使刪除行。一旦刪除,行通過reloaddata方法調用重新加載數據。就是這樣 –

+0

我在做同樣的事情,但它崩潰了。因爲在刪除perticular節它永遠不會更新其他節標記,它非常明顯 – Mrug

1

。與標準單元格不同,無法從標題部分獲取indexPath。如果你願意,你可以將標題部分視圖改爲UITableViewCell行,只需將它添加爲你的部分的第一行即可。

順便說一句,你可以使用

[self.tableView indexPathForCell:cell] 

,而不是得到的電池用索引路徑。

如果你決定使用一個標籤,你可以更新通過使用您的操作方法下面的代碼中的變量值:

[UIView animateWithDuration:0.2 animations:^{ 
     [self.tableView deleteSections:[NSIndexSet indexSetWithIndex:sectionToDelete] withRowAnimation:UITableViewRowAnimationAutomatic]; 
    } completion:^(BOOL finished){ 
     [self.tableView reloadData]; 
    }]; 

這將防止錯誤的標籤值和崩潰停止應用程序。

相關問題