在我的应用程序中,我想在 iPad 中显示多列 tableView。
所以,我使用了一个可可控件:MultiColumn TableView
它对我来说很好,但我想以交替颜色显示行。
为此,我无法找到更改代码的位置。
在我的应用程序中,我想在 iPad 中显示多列 tableView。
所以,我使用了一个可可控件:MultiColumn TableView
它对我来说很好,但我想以交替颜色显示行。
为此,我无法找到更改代码的位置。
- (void)tableView: (UITableView*)tableView willDisplayCell: (UITableViewCell*)cell forRowAtIndexPath: (NSIndexPath*)indexPath
{
if(indexPath.row % 2 == 0)
cell.backgroundColor = [UIColor redColor];
else
cell.backgroundColor = [UIColor whiteColor];
}
使用 indexPath 中的 cellForRowAtIndexPath
来获得所需的结果。
if( [indexPath row] % 2){
cell.backgroundColor=[UIColor whiteColor];
}
else{
cell.backgroundColor=[UIColor purpleColor];
}
您将在实现的类中拥有此委托方法UITableViewDelegate
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
.......
if (indexPath.row % 2 == 0) {
cell.backgroundColor = [UIColor lightGrayColor];
}
else
{
cell.backgroundColor = [UIColor darkGrayColor];
}
.......
return cell;
}
首先,您需要获取每行的模数。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
.......
if (indexPath.row % 2 == 0) {
cell.backgroundColor = [UIColor lightGrayColor];
}
else
{
cell.backgroundColor = [UIColor darkGrayColor];
}
....
return cell;
}
任何试图快速做到这一点的人都是我的代码。小巧玲珑。
这个技巧甚至适用于我不使用 cellForRowAtIndexPath 方法的静态单元格。
抱歉回答太少了。希望您了解数据源和代表。
override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
if (indexPath.row % 2) != 0{
cell.backgroundColor = UIColor .blackColor()
}else{
cell.backgroundColor = UIColor .lightGrayColor()
}
}
它会给你这样的结果......
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}
if(indexPath.row%2==0)
cell.contentView. backgroundColor=[UIColor redColor];
else
cell.contentView.backgroundColor=[UIColor greenColor];
return cell;
}
在您的代码中搜索 cellForRowAtIndexPath。该方法负责在您的表格视图中创建单元格。更多信息:UITableViewCell 在自定义单元格中具有备用背景颜色
在您的 cellForRow 方法中,您应该检查 indexPath.row 是否可被 2 整除分配第一种颜色,否则分配第二种颜色并返回结果单元格
func colorForIndex(index: Int) -> UIColor
{
let itemCount = stnRepos.count - 1
let color = (CGFloat(index) / CGFloat(itemCount)) * 0.6
return UIColor(red: 0.80, green: color, blue: 0.0, alpha: 1.0)
}
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell,
forRowAtIndexPath indexPath: NSIndexPath)
{
if (indexPath.row % 2 == 0)
{
cell.backgroundColor = colorForIndex(indexPath.row)
} else {
cell.backgroundColor = UIColor.whiteColor()()
}
}
对于Swift 3 + 并且不透明度降低:
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
if(indexPath.row % 2 == 0) {
cell.backgroundColor = UIColor.red.withAlphaComponent(0.05)
} else {
cell.backgroundColor = UIColor.white
}
}
在这样一个简单的例子中,我会选择三元运算符。我只是讨厌看到 cell.backgroundColor 重复。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
.
.
.
cell.backgroundColor = indexPath.row % 2 == 0 ? UIColor.red.withAlphaComponent(0.05) : .white
.
.
.
}
您可以运行一个循环,它将索引 path.row 增加 2,然后在该循环的主体中您可以分配颜色。,
这是 Swift 4.x 及更高版本的工作代码
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
if(indexPath.row % 2 == 0) {
cell.backgroundColor = UIColor.white
} else {
cell.backgroundColor = UIColor.lightGray
}
}