iOS - TableView - 在点击按钮上获取标题部分的索引
Posted
技术标签:
【中文标题】iOS - TableView - 在点击按钮上获取标题部分的索引【英文标题】:iOS - TableView - Get Index of Header section on tapping button 【发布时间】:2014-05-08 10:40:48 【问题描述】:我已经为 UITableView 实现了自定义标题部分。 Header 的自定义视图中有一个按钮,我想在该按钮的点击操作上获取该部分的索引。
我可以试试
CustomHeader *view = (CustomHeader*)btnObject.superView;
但是如何从这个 headerView 的实例中获取该部分的 IndexPath 或索引?
编辑: 我需要一些独立于标签的东西或任何类似于 Cell 的 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;
【问题讨论】:
您可以为自定义标题视图分配一个标签,并在按下按钮时获取该标签。 不,但是如果我们以某种方式删除该部分怎么办?那么就会出现不一致。 在重新加载表时,viewForHeaderInSection:
将再次被调用,因此标签将被重新分配。因此,如果您在删除该部分后重新加载表格,它应该可以工作。
如果标签(标准 int
或自定义 id
)不适合您,总有一个选项可以不使用标题,而是在需要时添加一个额外的单元格,然后您可以使用您的indexPathFromSenderView:
.
是的 Yogi 我同意你的观点,但是如果表格有大约 10-15 行的图像并且可能是一些庞大的内容怎么办?那么重新加载整个表只是为了重新分配标签并删除一行是否合适?
【参考方案1】:
-(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);
【讨论】:
但是如果要删除该部分,那么它会导致崩溃。 没有。首先测试它并让我知道。即使删除了行,它也会起作用。删除行后,通过 reloaddata 方法调用重新加载数据。就是这样 我在做同样的事情,但它崩溃了。因为在删除特定部分时它永远不会更新其他部分标签,非常明显【参考方案2】:您需要使用标签。与普通单元格不同,无法从标题部分获取 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];
];
这将防止标签值错误并阻止您的应用程序崩溃。
【讨论】:
以上是关于iOS - TableView - 在点击按钮上获取标题部分的索引的主要内容,如果未能解决你的问题,请参考以下文章
iOS 怎么给tableview空白处添加点击事件而不影响cell中的一些按钮的事件
IOS swift如何在标签点击时在TableView中获取标签文本