2015-09-04 46 views
5

我正在使用xcode 7測試版,但我發現此代碼已關閉,但我使用UIViewController而不是UITableViewController,原因很多。 (我不知道這是否導致了這個具體問題)。我已經得到了UIViewController設置就像一個典型的UITableViewController但我遇到了錯誤獲取錯誤模糊使用tableView(_:numberOfRowsInSection :)

曖昧使用'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

你設置'delegate'和'dataSource'到'tableView'?看起來你不符合'UITableViewDelegate'和'UITableViewDataSource'協議? – Bannings

+0

@Bannings我如何使它符合? – NewBeginnings

+0

試試這個:'class ShoppingViewController:UIViewController,UITableViewDataSource,UITableViewDelegate' – Bannings

回答

1

升級到Xcode 7.1測試版後我有類似的問題。我不知道這是否是測試版中的錯誤?有沒有人找到解決方案?

UPDATE - 所以我在我的項目中解決了這個問題。我必須爲我的tableView設置IBOutlet,然後在該對象上執行reloadData。例如將IBOutlet設置爲myItemsTableView,然後調用self.myItemsTableView.reloadData()並且工作正常。在這個項目中,它需要myItemsTableView並重載,而不是通用命令tableView.reloadData()。

希望有所幫助。

2

確保您已正確初始化 tableView。這解決了我同樣的問題。

0

我有一個類似的問題,我通過命名我的視圖控制器來解決其他問題。

必須有SDK視圖控制器命名DetailsViewController或DetailViewController