2015-02-14 4 views
0

Привет, я пытаюсь закодировать пользовательскую ячейку UITableView, и когда я ее запускал, я продолжаю получать сообщение об ошибке «Thread 1: EXC_BAD_INSTRUCTION (code = EXC_1386_INVOP, subcode = 0x0)» в этой строке кода :Тема 1: EXC_BAD_INSTRUCTION Ошибка

let cell: CustomCell = tableView.dequeueReusableCellWithIdentifier("Cell") as CustomCell 

Мой полный код ниже

В ViewController.swift:

import UIKit 

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { 

@IBOutlet weak var mytableview: UITableView! 

var arrayOfPersons: [Person] = [Person]() 


override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    self.setUpPersons() 

} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

func setUpPersons() 
{ 
    var person1 = Person(name: "Anna", number: 60, imageName: "testingimage.jpg") 
    var person2 = Person(name: "Joes", number: 10, imageName: "testingimage2.jpg") 

    arrayOfPersons.append(person1) 
    arrayOfPersons.append(person2) 

} 

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
{ 
    return arrayOfPersons.count 

} 

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

    let cell: CustomCell = tableView.dequeueReusableCellWithIdentifier("Cell") as CustomCell 



    if indexPath.row % 2 == 0 
    { 
     cell.backgroundColor = UIColor.darkGrayColor() 
    } 
    else 
    { 
     cell.backgroundColor = UIColor.blackColor() 
    } 

    let person = arrayOfPersons [indexPath.row] 

    cell.setCell(person.name, rightlabelInt: person.number, imageName: person.imageName) 



    return cell 

} 

} 

В CustomCell.Swift:

import UIKit 

class CustomCell: UITableViewCell { 

@IBOutlet weak var leftlabel: UILabel! 

@IBOutlet weak var rightlabel: UILabel! 

@IBOutlet weak var myimageview: UIImageView! 


required init(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder) } 


override init(style: UITableViewCellStyle, reuseIdentifier: String?){ 
    super.init(style: style, reuseIdentifier: reuseIdentifier) 

} 

override func awakeFromNib() { 
    super.awakeFromNib() 
    // Initialization code 
} 

override func setSelected(selected: Bool, animated: Bool) { 
    super.setSelected(selected, animated: animated) 

    // Configure the view for the selected state 
} 

func setCell(leftlabelText: String, rightlabelInt: Int, imageName: String) 
{ 
    self.leftlabel.text = leftlabelText 
    self.rightlabel.text = String(rightlabelInt) 
    self.myimageview.image = UIImage(named: imageName) 
} 

} 

И в Person.Swift:

import Foundation 

class Person { 

var name = "name" 
var number = 0 
var imageName = "blank" 

init(name: String, number: Int, imageName: String) 
{ 
    self.name = name 
    self.number = number 
    self.imageName = imageName 
} 
} 

Я не уверен, что означает, что ошибка, или если я сделал ошибку где-то. Любая помощь будет замечательной!

Спасибо!

+0

вы используете S toryboards? – Ian

+0

Является ли ваш UITableView в раскадровке? Также, если да, у вас есть UITableViewCell с идентификатором как «Ячейка»? – gagarwal

+0

Привет, я просто проверил его снова, и я обнаружил, что я помещал ячейку в неправильный идентификатор>. < спасибо за помощь! :) – lillylilly

ответ

0

У меня была аналогичная проблема с классом, наследующим от UITextView. Решение оказалось, что мне нужно было переопределить все методы init.

переопределение инициализации() { super.init()}

переопределение инициализации (рама: CGRect, textContainer: NSTextContainer) {super.init (рама: рама, textContainer: textContainer)}

переопределить инициализации (кадр: CGRect) {super.init (кадр: кадр)}

требуется инициализация (кодировщик aCoder: NSCoder) {super.init (кодировщик: aCoder)}

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