分配代理以检测滚动后,TableView单元格重叠

问题描述 投票:0回答:1

这是聊天的表格视图。 我想添加一个按钮,当表视图没有滚动到底部时出现。 该按钮应作为按下时滚动到表格视图底部的快捷方式。 在viewDidLoad中,我创建了一个渐变图层(UIView),阴影图层(UIView)和一个UIButton。

- (void)viewDidLoad {
    [super viewDidLoad];    

    //Create a gradient UIView
    //Assuming color, size & other appearance properties are set here...
    [self.view addSubview:gradientLayer];

    //Create a button shadow UIView
    //Assuming color, size & other appearance properties are set here...
    [self.view addSubview:goToBtmShadow];

    //Create a button that scrolls to bottom of table view
    //Assuming color, size & other appearance properties are set here...
    [self.view addSubview:goToBtm];

    [self showGoToBtm:NO]; //Button is hidden by default

    // ↓ TAKE NOTE OF THIS LINE
    self.tableView.delegate = self; // <-- THIS LINE
    // ↑ THIS LINE
}

在scrollViewDidScroll中,我已将其设置为检查表视图是否滚动到底部以确定是否应显示该按钮。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    BOOL isScrolledToBottom = self.tableView.contentOffset.y >= (self.tableView.contentSize.height - self.tableView.bounds.size.height - 0.1);
    if (isScrolledToBottom) {
        [self showGoToBtm:NO];
    } else {
        [self showGoToBtm:YES];
    }
}

创建showGoToBtm函数是为了在编码时使生活更轻松。

- (void) showGoToBtm:(BOOL)show {
    if (show == true) {
        gradientLayer.hidden = NO;
        goToBtmShadow.hidden = NO;
        goToBtm.hidden = NO;
        goToBtm.enabled = YES;
    } else {
        gradientLayer.hidden = YES;
        goToBtmShadow.hidden = YES;
        goToBtm.hidden = YES;
        goToBtm.enabled = NO;
    }
}

如果没有将self.tableView.delegate = self;添加到viewDidLod中,则无论如何都不会出现该按钮。 但是当它最终添加时,按钮的行为与预期的一样,但表视图开始以奇怪的方式表现。单元格没有以正确的行高显示,并且内容彼此重叠。

Screenshot before delegate is added Screenshot after delegate is added

ios objective-c scroll tableview overlap
1个回答
0
投票

你确定这个按钮有问题吗?如果您只是删除scrollViewDidScroll问题仍然存在?

无论如何,你可能遇到的问题是,如果委托是null,你的表视图使用的默认值可能是在故事板中设置的,旨在自动调整大小。

请尝试将估计的行高代表方法添加到某些值,如100。并添加行高度委托方法并将其设置为automatic。或者在视图加载时直接在表视图上设置这2。

© www.soinside.com 2019 - 2024. All rights reserved.