tableView:cellForRowAtIndexPathメソッドでUITableViewCellsの背景色を変更します
if(indexPath.row % 2 == 0){
cell.backgroundColor = ...
} else{
cell.backgroundColor = ...
}
しかし、それはtableView:numberOfRowsInSectionで指定されたセル量の色のみを変更します(添付の図に見られるように、最初の4つの後に白いセルがあります)
画面に表示されるすべてのセルの色を変更することはできますか?
セルの背景色を引き続き交互に表示する場合は、テーブル内の行数を指定する必要があります。具体的には、tableView:numberOfRowsInSectionで常に画面を埋める数値を返す必要があり、tableView:cellForRowAtIndexPathで、末尾を超える行に対して空白のセルを返しますテーブルの。次のコードは、self.dataArrayがNSStringのNSArrayであると仮定して、これを行う方法を示しています。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if ( self.dataArray.count < 10 )
return( 10 );
else
return( self.dataArray.count );
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"SimpleCell"];
if ( indexPath.row % 2 == 0 )
cell.backgroundColor = [UIColor orangeColor];
else
cell.backgroundColor = [UIColor redColor];
if ( indexPath.row < self.dataArray.count )
cell.textLabel.text = self.dataArray[indexPath.row];
else
cell.textLabel.text = nil;
return cell;
}
このようにしてみてください:-
self.tableView.backgroundView.backgroundColor = [UIColor blueColor];
これを使用して、テーブルビューの代替セルに色を付けました
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell,
forRowAtIndexPath indexPath: NSIndexPath) {
if (indexPath.row % 2 == 0)
{
cell.backgroundColor = UIColor.grayColor()
}
else
{
cell.backgroundColor = UIColor.whiteColor()
}
}
Swiftでは、tableviewの背景色を変更したり、画像をtableviewの背景色に設定したりできます。
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.view.backgroundColor = UIColor(patternImage: UIImage(named: "background.png")!)
self.tableView.backgroundColor = UIColor.clearColor()
}
// change cell text color and background color
override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
cell.backgroundColor = UIColor.clearColor()
}
Swiftの場合
@Irshad Qureshiのおかげで、cellForRowAtIndexPathに以下を追加することで、プロトタイプセルの背景色を交互に変えることができました。
if (indexPath.row % 2 == 0)
{
cell!.backgroundColor = UIColor.groupTableViewBackgroundColor()
}
else
{
cell!.backgroundColor = UIColor.whiteColor()
}
テーブルビューのbackgroundView
をnil
に設定し、そのbackgroundColor
を目的の色に設定する必要があります。