2015-08-28 48 views
0

我有一個具有customtableView Cell的UITableView。這已被分類。 tableViewCell有一個圖像,標籤和一個UIView(見附件截圖)enter image description hereiOS使用drawrect在tableView內繪製圖像

爲了讓我把UIView放在單元格內。我使用drawRect在單獨的類makeLine.swift中創建了該行,並將其指定爲視圖的類。

問題1:我想根據TableRownumber更改線的顏色。我已經爲customCell類中的UIView做了一個插座。我猜一些需要在cellForRowIndexPath方法中完成 - 但不知道是什麼和如何。我不希望使用現有的圖像爲線

下面是拍行的代碼:2一旦這條線是由,我想讓它tapable

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) 
    } 
} 

問題和延續到下一個viewController。我已經將tapGestureRecognizer添加到UIView(它具有該行)。我也啓用了用戶交互。 Tap功能的是下面的 - 但不知何故,它不工作

@IBAction func lineTap(sender: AnyObject) { 
    performSegueWithIdentifier("segue", sender: self) 
} 

回答

0

1期

您可以在相應的行數存儲在自定義單元格的屬性,像這樣:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) 
{ 
    var cell = tableView.dequeueReusableCellWithIdentifier("cellIdentifier") as CustomCell 
    cell.rowNumber = indexPath.row 

    ... 

    return cell 
} 

在自定義單元格中,爲屬性創建自定義設置器,如下所示:

var rowNumber : Int { 
    didSet { 
     drawLineWithRowNumber(rowNumber) 
    } 
} 

drawLineWithRowNumber(rowNumber)是調用行類的drawRect方法的方法。這樣,您可以將行號傳遞給負責繪製線條的視圖。您仍然必須實施任何邏輯來根據給定的行號選取線條顏色。

第2期

不是使線可點擊,你就能更好地運用func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)導航到下一個視圖控制器,除非你需要特定行爲時,該線路將被挖掘出來。