2015-08-28 3 views
0

У меня есть UITableView, у которого есть customtableView Cell. Это было подклассом. TableViewCell имеет изображение, ярлык и UIView (см. Прилагаемый скриншот) enter image description hereiOS рисование изображения в таблицеView с использованием drawrect

Чтобы сделать линию, я поместил UIView в ячейку. Я сделал строку в отдельном классе makeLine.swift, используя drawRect, и обозначил это как класс для представления.

Выпуск 1: Я хочу изменить цвет линии в зависимости от TableRownumber. Я сделал выход для UIView в классе customCell. Я предполагаю, что что-то нужно сделать в методе 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 (у которого есть строка). Я также включил User Interaction. Функция крана заключается в следующем - но почему-то ее не работает

@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

Вместо того, чтобы линия tappable, вы можете лучше использовать func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath), чтобы перейти к следующему контроллеру представления, если вам не требуется определенное поведение, когда линия будет прослушиваться.