我有一个带有一些自定义单元格的表格视图。第一个里面是一个按钮。当按下这个按钮时,我想滚动到我的表格视图中的某个部分。我如何必须将按钮操作与 tableview 链接?
问问题
205 次
3 回答
2
您可以使用此功能滚动到某个部分:
- (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated
使用示例是:
[tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:5 inSection:indexPath.section]
atScrollPosition:UITableViewScrollPositionMiddle animated:NO];
并将按钮操作与 tableview 链接,您可以在自定义单元格中使用协议
于 2013-06-02T16:45:32.390 回答
1
您可以将单元格的按钮设置为属性,并且cellForRowAtIndexPath
可以在加载表格视图的类中设置目标,这样您就不需要任何委托。像这样的东西:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *identifier = @"YourCellIdentifier";
YourCustomCell *cell =[tableView dequeueReusableCellWithIdentifier:identifier];
if(cell == nil) {
cell = [YourCustomCell alloc/init method....
[cell.buttonProperty addTarget:self action:@selector(cellButtonTapped:)
forControlEvents:UIControlEventTouchUpInside];
}
//do other stuff with your cell
}
-(void)cellButtonTapped:(id)sender {
UIButton *button = (UIButton*)sender;
YourCustomCell *cell = (YourCustomCell*)button.superview.superview; //if the button is added to cell contentView or button.superview is added directly to the cell
NSIndexPath *path = [yourTableView indexPathForCell:cell];
[yourTableView scrollToRowAtIndexPath:path
atScrollPosition:UITableViewScrollPositionTop
animated:YES];
}
于 2013-06-02T19:20:58.663 回答
1
从您的单元格返回一个委托机制 - 创建单元格时,为其分配一个 NSIndexPath 并在点击按钮时将其从单元格传回。
因此,在您的 UITableViewCell 子类中,您将拥有:
- (IBAction)buttonPressed:(id)sender
{
[self.delegate buttonPressedOnCellAtIndexPath:cell.indexPath]
}
回到作为委托的控制器中,使用以下命令响应此方法:
- (void)buttonPressedOnCellAtIndexPath:(NSIndexPath)indexPath
{
[self.tableView scrollToRowAtIndexPath:indexPath];
}
于 2013-06-02T16:44:14.283 回答