以下是我在使用UITableView的過程中遇到的一些情況,跟大家分享下:
一、UITableView頂部留有空白,當場就嚇尿了。如下:
這時候的storyboard中UITableView如下的:
這紅色框區域的空白是什麼鬼。。。
當我改變storyboard中tableView的起始位置之後,居然正常了:
但是爲什麼會這樣呢?改變UITableView的起始位置之前,其頂部不是還有UINavigationBar(標題欄)嗎?顯然,改變位置之後,UITableView頂部還是留有空白的,只是被UINavigationBar(標題欄)遮擋了。而且,這空白的高度跟UINavigationBar的高度是一致的,均爲64。
爲此,上網搜索了一下,得到如下的結論:
UIViewController下如果只有一個UIScollView或者其子類(UITableView,UICollectionView),那麼會自動留出空白,讓scollview滾動經過各種bar下面時能隱約看到內容。但是每個UIViewController只能有唯一一個UIScollView或者其子類,如果超過一個,需要將此屬性設置爲NO,自己去控制留白以及座標問題。
雖然看不太懂,但是有如下解決方法:
self.automaticallyAdjustsScrollViewInsets = NO;(寫在viewDidLoad中)
果然有效。
二、去除UITableView多餘的橫線。
我們可以注意到上面的tableView中,即使該項沒有內容,也有橫線,如何去除呢?
self.MyTableView.tableFooterView = [[UIView alloc]initWithFrame:CGRectZero];(寫在viewDidLoad中)
效果如下:
三、通常,tableViewcell點擊之後會變成灰色,這是默認情況。其實它有四種點擊後樣式:
typedef NS_ENUM(NSInteger, UITableViewCellSelectionStyle) {
UITableViewCellSelectionStyleNone,
UITableViewCellSelectionStyleBlue,
UITableViewCellSelectionStyleGray,
UITableViewCellSelectionStyleDefault NS_ENUM_AVAILABLE_IOS(7_0)
}
可是,除了UITableViewCellSelectionStyleNone可設置cell選中爲無顏色之外,其餘幾項無論如何設置,均爲灰色。爲什麼會這樣呢?因爲iOS7之後棄用了。
那如果非要使得選中之後有顏色呢?
可以設置cell的selectedBackgroundView,重新手寫一個UIView,賦給它就得了。如下:
(寫在cellForRowAtIndexPath回調函數中)
UIView *bgView = [[UIView alloc]init];
bgView.backgroundColor = [UIColor blueColor];//這裏設置自己需要的顏色即可。如藍色
cell.selectedBackgroundView = bgView;
還有一種情況是,點擊了cell之後,跳轉到另外一個頁面。默認情況下,返回該頁面的時候,點擊時候的背景顏色是不會去掉的。這時可以在回調函數中加上:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
這樣的話,點擊之後跳轉頁面,返回原頁面,選擇cell的顏色不會保留。