我有一个UITableView,它有一个customtableView Cell。这已被分类。 tableViewCell有一个图像,标签和UIView(参见附件截图)
要制作线条,我将UIView放在单元格中。我使用drawRect在一个单独的类makeLine.swift中创建了该行,并将其指定为视图的类。
问题1:我想根据TableRownumber更改线条的颜色。我在customCell类中为UIView做了一个出口。我猜测需要在cellForRowIndexPath方法中完成一些事情 - 但不知道是什么以及如何做。我不想将现有图像用于行
以下是制作该行的代码:
class LoginLine1: UIView {
override func drawRect(rect: CGRect) {
let context = UIGraphicsGetCurrentContext()
CGContextSetLineWidth(context, 2.0)
let colorSpace = CGColorSpaceCreateDeviceRGB()
let components: [CGFloat] = [107.0/255.0, 107.0/255.0, 107.0/255.0, 1.0]
let color = CGColorCreate(colorSpace, components)
CGContextSetStrokeColorWithColor(context, color)
CGContextMoveToPoint(context, 0, 0)
CGContextAddLineToPoint(context, 70, 0)
CGContextStrokePath(context)
}
}
第2期一旦生成此行,我想将其设置为tapable并转到下一个viewController。我已将tapGestureRecognizer添加到UIView(其中包含该行)。我还启用了用户交互。点击功能如下 - 但不知何故它不起作用
@IBAction func lineTap(sender: AnyObject) {
performSegueWithIdentifier("segue", sender: self)
}
答案 0 :(得分:0)
第1期
您可以将相应的行号存储在自定义单元格的属性中,如下所示:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
{
var cell = tableView.dequeueReusableCellWithIdentifier("cellIdentifier") as CustomCell
cell.rowNumber = indexPath.row
...
return cell
}
在自定义单元格中,您可以为属性创建自定义setter,如下所示:
var rowNumber : Int {
didSet {
drawLineWithRowNumber(rowNumber)
}
}
drawLineWithRowNumber(rowNumber)
是调用行类的drawRect
方法的方法。通过这种方式,您可以将行号传递给负责绘制线的视图。您仍然必须实现任何基于给定行号选择线条颜色的逻辑。
第2期
您可以更好地使用func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
导航到下一个视图控制器,而不是让线路可以点击,除非您在点击线路时需要特定的行为。