在这段代码中我添加了编程VC:
@IBAction func addPerson(_ sender: UIBarButtonItem) {
let controller = CNContactPickerViewController()
controller.delegate = self
navigationController?.present(controller, animated: true, completion: nil)
}
这里我点击联系人时使用另一个VC(将信息显示在单元格中,然后我想在我的第一个VC中显示电话/电子邮件的复选框)
func contactPicker(_ picker: CNContactPickerViewController, didSelect contact: CNContact) {
let vc = EditContactViewController()
self.navigationController?.pushViewController(vc, animated: true)
我为下一个单元格创建了一个类,我将标识符设置为storyboard中的单元格 当我在tableView cellForRowAtIndexPath
中执行此操作时let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as? ConfigCell
return cell!
这给了我:
fatal error: unexpectedly found nil while unwrapping an Optional value
我也试过withIdentifier,forIndexPath,它说:
2016-11-12 01:35:28.626 iEvents3 [2637:47714] ***终止app到期 未被捕获的异常' NSInternalInconsistencyException',原因: '无法使用标识符单元格将单元格出列 - 必须注册一个笔尖 或标识符的类或连接原型单元格 故事板'
我删除了重用标识符并将其重新放回,清理了应用程序,重启,一切。
感谢您的时间!
答案 0 :(得分:4)
这可能有几个原因:
如果控制器本身有UITableViewCell
,请检查重复使用标识是否设置为"cell"
如果您的.xib
单独UITableViewCell
,那么
a)使用控制器的viewDidLoad()
中的表格视图注册单元格的.nib
self.tableView.register(UINib(nibName:"CustomTableViewCell"), forCellWithReuseIdentifier: "cell")
仅当您确定.nib
设置为outlet
时才注册table view
。否则,如果outlet
如果table view
仍为nil
,则不会注册您的单元格的.nib
。
b)检查重用标识符是否设置为"cell"
答案 1 :(得分:3)
答案 2 :(得分:1)
你有那个细胞作为xib吗?您是否将单元格添加到表格视图中?如果是这种情况,请尝试此操作
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
self.tableView.register(UINib(nibName: "ConfigCell",bundle: nil), forCellReuseIdentifier: "cell")
}
答案 3 :(得分:1)
即使您没有单元格的xib,也可能需要注册它:
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "MyCell")
答案 4 :(得分:0)
当单元格展开时崩溃应用程序
func tableView(_ tableView:SLExpandableTableView!,willExpandSection section:UInt,animated:Bool) {
}
func tableView(_ tableView: SLExpandableTableView!, didExpandSection section: UInt, animated: Bool)
{
let indexPath = IndexPath(row: 0, section: Int(section))
let cell: SLExpandableHeaderCell = (tableView.cellForRow(at: indexPath) as! SLExpandableHeaderCell)
cell.empProfImage?.image = UIImage(named: "upArrowGrey.png")
// let imgCategorySymbol: UIImageView = (cell.viewWithTag(5030) as! UIImageView)
// imgCategorySymbol.image = UIImage(named: "upArrowGrey.png")
for i in 0..<arrCategoriesServices.count
{
if !selectedSectionIndex.contains("\(i)") && i != Int(section) {
tableView.collapseSection(i, animated: true)
}
}
}
func tableView(_ tableView: SLExpandableTableView!, willCollapseSection section: UInt, animated: Bool) {
let indexPath = IndexPath(row: 0, section: Int(section))
let cell: SLExpandableHeaderCell = (tblExpandableView.cellForRow(at: indexPath) as! SLExpandableHeaderCell)
cell.empProfImage?.image = UIImage(named: "downArrowGrey.png")
// let imgCategorysymbol: UIImageView? = (cell.viewWithTag(5030) as! UIImageView)
// imgCategorysymbol?.image = UIImage(named: "downArrowGrey.png")
}
func tableView(_ tableView: SLExpandableTableView, canChangeSection section: Int) -> Bool {
if collapsingSection != section {
return true
}
else {
return false
}
}
func tableView(_ tableView: SLExpandableTableView!, didCollapseSection section: UInt, animated: Bool) {
}
func tableView(_ tableView: SLExpandableTableView, canExpandSection section: Int) -> Bool
{
return true
}
func tableView(_ tableView: SLExpandableTableView!, needsToDownloadDataForExpandableSection section: Int) -> Bool
{
return false
}
func tableView(_ tableView: SLExpandableTableView!, expandingCellForSection section: Int) -> UITableViewCell
{
var cell: SLExpandableHeaderCell!
if cell == nil
{
cell = tblExpandableView.dequeueReusableCell(withIdentifier: headerCell) as! SLExpandableHeaderCell
}
let label = UILabel()
label.frame = CGRect(x: CGFloat(10), y: CGFloat(10), width: CGFloat(100), height: CGFloat(25))
cell.addSubview(label)
cell.empProfImage?.image = UIImage(named: "downArrowGrey.png")
cell?.selectionStyle = .none
let cat: CategoryModel = (arrCategory[section] as! CategoryModel)
label.text = cat.categoryName
print("Expanding table for categoty : \(cat.categoryName)")
// cell.textLabel?.frame = frame
// cell?.textLabel?.text = cat.categoryName
// Util.setCategoryDetailFontColorAndSize(label:(cell?.textLabel!)!, labelText:cat.categoryName) Util.setCategoryDetailFontColorAndSize(label:label,labelText:cat.categoryName) cell?.textLabel?。backgroundColor = UIColor.clear
return cell!
}
public func tableView(_ tableView: SLExpandableTableView!, downloadDataForExpandableSection section: Int)
{
}
答案 5 :(得分:0)
在我的情况下,这是一个愚蠢的错误,只是以.xib为名的打印错误,但是我花了太多时间才能找到它,因为该名称很长且很难看到该错误,所以我寻找其他原因。 现在看来如此明显..但是狗屎发生了:)
如果有这种情况,希望节省您的时间。
答案 6 :(得分:0)