2015-01-15 3 views
0

Я начинаю стремительное программирование и новичок в ios. Я пытаюсь сделать представление таблицы, но условие if (cell == nil), но ячейка никогда не имеет значения nil и не вступает в состояние, это мой код.ячейка tableview не нуль при инициализации в swift

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    //cell content declaration 

     var rightlabel = UILabel(frame: CGRectMake(200, 10, 200, 21)) 
     var mainTextLabel = UILabel(frame: CGRectMake(10, 10, 200, 21)) 
     var imageView = UIImageView() 
     var cell : UITableViewCell! 

     cell = tableView.dequeueReusableCellWithIdentifier("detailsCell") as? UITableViewCell 


    //cell content declaration END 




if(cell == nil) 
{ 

    cell = tableView.dequeueReusableCellWithIdentifier("detailsCell", forIndexPath: indexPath) as UITableViewCell 

    let test: AnyObject? = myData?.objectForKey("\(indexPath.row + 1)") 
    let hrvalue : AnyObject? = test?.objectForKey("name") 
    let subtitle : NSNumber? = test?.objectForKey("distance") as? NSNumber 
    let icon : String = test?.objectForKey("icon") as String 



    //CUSTOM LABEL START FROM HERE 

     mainTextLabel.text = hrvalue as? String 
     rightlabel.text = "\(subtitle as Float) k.m. away from here." 

     mainTextLabel.font = UIFont.systemFontOfSize(18.0) 
     rightlabel.font = UIFont.systemFontOfSize(14.0) 

     let image = UIImage(named: icon) 
     imageView = UIImageView(image: image!) 
     imageView.frame = CGRect(x: 120, y: 10, width: 30, height: 30) 

     mainTextLabel.tag = 4 
     rightlabel.tag = 50 
     imageView.tag = 100 

     cell.contentView.addSubview(mainTextLabel) 
     cell.contentView.addSubview(rightlabel) 
     cell.contentView.addSubview(imageView) 



    //CUSTOM LABEL END 

} 
    if(cell != nil) 
    { 
println("outside") 

    //FATCHING TAG & RETURN CELL 

     mainTextLabel = cell.viewWithTag(4) as UILabel 
     rightlabel = cell.viewWithTag(50) as UILabel 
     imageView = cell.viewWithTag(100) as UIImageView 
     } 
     return cell 

    // FATCHING TAG & RETURN CELL END 


    } 
+0

Вы используете ячейки прототипа в раскадровке или иным образом зарегистрировали класс/нить против идентификатора повторного использования? Если это так, 'dequeueReusableCellWithIdentifier' никогда не вернет нуль. Ваш код внутри 'if cell == nil' тоже не имеет смысла. - В традиционном подходе, когда класс ячейки или nib не зарегистрирован, вы не вызываете' dequeueReusableCellWithIdentifer: indexPath: 'в этом случае вам действительно нужно для выделения новой ячейки – Paulw11

+0

да я использую прототип ячейки в storyBoard – Biren

+0

Я меняю свой код и удаляю cell = tableView.dequeueReusableCellWithIdentifier ("detailsCell") как? UITableViewCell и добавил его в ячейку if: = nil, , и теперь я получаю значение nil, но он не входит в условие if – Biren

ответ

0

клетка никогда не может быть нулевым, как вы инициировании клеток прямо на старте в // cell content declaration области уже. Итак, теперь у вас есть экземпляр ячейки. Следовательно, он не может быть ниже. Далее вы вводите проверку кода, если (cell == nil). В результате код никогда не вызывается.

Или, другими словами, вы пытаетесь повторно создать ячейку избыточно. Избавьтесь от первого:

cell = tableView.dequeueReusableCellWithIdentifier("detailsCell") as? UITableViewCell

и вы код внизу будет вызван.

Кроме того, второе условие далее вниз (cell! = Nil) всегда будет оцениваться как ДА, поскольку на данный момент времени вы создадите экземпляр ячейки так или иначе. Поэтому вы также можете избавиться от этого теста.

+0

Я удалил эту строку 'cell = tableView.dequeueReusableCellWithIdentifier (" detailsCell ") как? UITableViewCell 'из' // декларации содержимого ячеек', и я получаю значение nil, но код под if (cell == nil) не работает – Biren

+0

Итак, прежде всего, кажется, что ваши исходные вопросы получили ответ. Я был бы признателен, если бы вы пометили мой ответ как правильный ;-) Во-вторых, убедитесь, что вы делаете что-то в правильном порядке. 1.) получить ячейку (который теперь работает) 2.) создать подвиды и добавить их в ячейку 3.) присвоить значения этих взгляды иерархии выглядит так: Cell содержит подвиды, подвиды имеют свойство. Я думаю, что вы испортили заказ. – DoertyDoerk

Смежные вопросы