1

我有一个带有一些自定义单元格的表格视图。第一个里面是一个按钮。当按下这个按钮时,我想滚动到我的表格视图中的某个部分。我如何必须将按钮操作与 tableview 链接?

4

3 回答 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 回答