我正在使用xcode 7 beta,但我发现这个代码不是教程,但我使用UIViewController
代替UITableViewController
有很多原因。 (我不知道这是否导致了这个具体问题)。我已经获得了UIViewController
设置,就像典型的UITableViewController
但是我遇到了错误
模糊地使用
'tableView(_:numberOfRowsInSection:)
这是我的代码
class ShoppingViewController: UIViewController {
var toDoItems:NSMutableArray = NSMutableArray()
override func viewDidAppear(animated: Bool) {
var userDefaults:NSUserDefaults = NSUserDefaults.standardUserDefaults()
var itemListFromUserDefaults:NSMutableArray? = userDefaults.objectForKey("itemList") as? NSMutableArray
if ((itemListFromUserDefaults) != nil){
toDoItems = itemListFromUserDefaults!
}
**self**.tableView.reloadData()
}
以及
if (segue != nil && segue!.identifier == "showDetail") {
var selectedIndexPath:NSIndexPath = **self**.tableView.indexPathForSelectedRow()
var detailViewController:DetailsViewController = segue!.destinationViewController as! DetailsViewController
detailViewController.toDoData = toDoItems.objectAtIndex(selectedIndexPath.row) as! NSDictionary
}
候选人(根据XCode):
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return toDoItems.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell
let toDoItem:NSDictionary = toDoItems.objectAtIndex(indexPath.row) as! NSDictionary
cell.textLabel!.text = toDoItem.objectForKey("itemTitel") as? String
return cell
}
答案 0 :(得分:2)
升级到Xcode 7.1 beta后,我遇到了类似的问题。我想知道这是否是测试中的错误?有没有人找到解决方案?
更新 - 所以我在我的项目中解决了这个问题。我必须为我的tableView设置IBOutlet,然后在该对象上执行reloadData。例如将IBOutlet设置为myItemsTableView然后调用self.myItemsTableView.reloadData()并且工作正常。在这个项目中,它需要myItemsTableView并重新加载,而不是通用命令tableView.reloadData()。
希望有所帮助。答案 1 :(得分:2)
确保已正确初始化 tableView 。这解决了我同样的问题。
答案 2 :(得分:0)
我有一个类似的问题,我通过命名我的View Controller来解决其他问题。
SDK中必须有一个名为DetailsViewController或DetailViewController的视图控制器