UITableview 常見問題

weixin_34402408發表於2017-11-23

第一: 設定cell的選中背景顏色

第一步:在cellForRow 方法裡面 設定選中的顏色

cell.selectedBackgroundView = [[UIView alloc] initWithFrame:cell.frame];

cell.selectedBackgroundView.backgroundColor = SELECTED_BACKGROUND_COLOR;

第二步:返回頁面的時候取消選中有兩種方法

方法一: 在 didSelectRowAtIndexPath 中設定


[tableView deselectRowAtIndexPath:indexPath animated:YES];

方法二: 在 viewWillAppear

[self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow] animated:YES];

注:當cell上門放置的有小控制元件 設定背景色後,選中後控制元件的背景色也變數

處理方法:

- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated{

[super setHighlighted:highlighted animated:animated];

_cellLeavealLabel.backgroundColor = [UIColor colorWithHex:0xffa80f alpha:1];

}

第二: iOS開發 - 讓tableView不能下拉重新整理,可以上拉載入

剛剛被問到如題的問題,索性試了下,主要是設定tableView的bounces屬性,預設為YES,可上下出現彈性區,需要寫在scrolView的代理方法中:

-(void)scrollViewDidScroll:(UIScrollView *)scrollView

{

NSLog(@"%f",_tableView.contentOffset.y);

if (_tableView.contentOffset.y <= 100) {

_tableView.bounces = NO;

}

else

{

_tableView.bounces = YES;

}

}

第三: iOS11適配 tableView頂部多一塊 cell高度錯誤

問題一:

之前的estimatedSection******Height預設為0,現在不為0了,直接寫第一部分程式碼也可以,或者不設定estimatedSection,把程式碼2兩個代理補上也行,看自己選擇,本質原因就是因為預設值問題,這兩種方式都可以解決這個預設值問題

程式碼1

if (@available(iOS 11.0, *)) {
        self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
        // est和代理 可選1個
        self.tableView.estimatedSectionFooterHeight = 0;
        self.tableView.estimatedSectionHeaderHeight = 0;
    } else {
        self.automaticallyAdjustsScrollViewInsets = NO;
    }

程式碼2

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
    return nil;
}

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    return nil;
}
問題二:

cell高度出現高度重合問題(cell的預設高度 44 不在起作用)

self.tableView.estimatedRowHeight = 0;