2015-10-20 467 views
1

也许我的问题很简单,我太傻了。 我的问题是,我要访问外部获取任何tableView函数之外的indexpath

overide func tableView(...) 

所以我在我的TableView类的indexPath,并有一个单独的类,如:

func setColor() 
{ 
... 
} 

这个类里面我要访问的indexPath 。我怎样才能做到这一点?

+0

传递indexPath作为参数。 – rmaddy

+0

你需要澄清你的目标是什么。如何以及何时调用这个'setColor'方法?它是什么课程? – rmaddy

+0

我在类TableView中,从另一个类的外部调用此函数,名为setColor。 – Anokrize

回答

1

indexPath是一个对象,它被创建并传递给UITabelViewDelegate或UITableViewDataSource方法。它可以让你指出哪个单元格被加载/点击等。

所以你将无法从外部访问这个对象。如果你想改变一些细胞的某些物质,例如您应该将颜色存储在属性中的backgroundColor,更改此属性并强制重绘。在创建单元格的委托方法中,使用此属性来设置颜色。

这是一些示例代码。

的ViewController

class TestTableViewController: UIViewController, UITableViewDelegate { 

    // Store array of color 
    var backColors = [UIColor.redColor(), UIColor.greenColor()] 


    // Method which changes color 
    func setColor(row: Int, color: UIColor) { 
     backColors[row] = color 
    } 

    // Override draw 
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     // Create your cell 
     // ... 

     // Set color 
     cell.backgroundColor = backColors[indexPath.row] 
    } 
} 
+0

是的我想改变单元格的背景颜色。所以我应该强制重新加载tableView,然后在cellforRowAtIndexPath里面,我应该设置颜色? – Anokrize

+0

这是我如何做到这一点。将颜色存储在控制器中,强制重绘,cellforRowAtIndexPath方法使用此颜色。 – SnowMax

相关问题