【问题标题】:How to fix "nib but didn't get a UITableView" error?如何修复“笔尖但没有收到 UITableView”错误?
【发布时间】:2015-07-13 17:17:46
【问题描述】:

为什么会出现此错误?

由于未捕获的异常而终止应用程序 'NSInternalInconsistencyException',原因:'-[UITableViewController loadView] 加载了“pB1-re-lu8-view-o7U-YG-E7m”笔尖,但没有得到 UITableView。'

这是我的代码:

class FriendListTableViewController: UITableViewController{


var objects = NSMutableArray()
var dataArray = [["firstName":"Debasis","lastName":"Das"],["firstName":"John","lastName":"Doe"],["firstName":"Jane","lastName":"Doe"],["firstName":"Mary","lastName":"Jane"]]

override func viewDidLoad() {
    super.viewDidLoad()
}

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

// MARK: - Table View

 override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
}

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

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

    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! UITableViewCell
    let object = dataArray[indexPath.row] as NSDictionary
    (cell.contentView.viewWithTag(10) as! UILabel).text = object["firstName"] as? String
    (cell.contentView.viewWithTag(11) as! UILabel).text = object["lastName"] as? String
    return cell
}

 override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
    // Return false if you do not want the specified item to be editable.
    return false
}

我的故事板是这样的:

【问题讨论】:

  • 我怎样才能正确地做到这一点?
  • 写入 Void Did Load 方法.. self.delegate=self; self.dataSource=自己;并在 ViewController.h Extend..
  • 试试这个,解决问题后通知我。
  • @EgaSetyaPutra 告诉我你遇到了什么错误。
  • 你的答案不是用objective-c写的吗?因为我正在使用 swift

标签: ios iphone uitableview swift uiview


【解决方案1】:

我曾经遇到过同样的问题,这是一个愚蠢的错误,我将UITableViewController 子类化,在UIViewController 中添加了UITableView

从您的故事板图像中,如果您使用UIViewController 而不是UITableViewController 可能会解决,试试这种方式可以解决您的问题,就像

class FriendListTableViewController: UIViewController, UITableViewDataSource, UITableViewDelegate 

【讨论】:

  • 我认为你的答案是我们如何使用objective-c设置委托,我已经设置了这样的委托“FriendListTableViewController:UIViewController,UITableViewDelegate,UITableViewDataSource”。但我仍然有同样的错误
  • 您是否检查过您的UITableView 已附加顶级。你可以通过UIStoryBoard的视图层次来查看。
  • @EgaSetyaPutra 上面的答案是使用 swift .. 你使用的是 swift 还是 Objective c?
  • @ViralSavaj 您是否阅读了 Ega Setya Putra 对您的回答的评论。如果没有先阅读,请先阅读,然后告诉我...
  • @AshokLondhe,我在评论后更新了答案,所以请注意
【解决方案2】:

SWIFT 2 更新

我尝试了@Viralsavaj 的答案,但直到我将 tableView 作为 ViewController 中情节提要的出口“连接”后,它才对我有用。

像这样:@IBOutlet weak var tableView: UITableView!

正如@Viralsavaj 提到的那样,将其添加到您的课程中:

class TableViewController: UIViewController, UITableViewDataSource, UITableViewDelegate

我也专门使用了这个链接帮助:How to reference tableView from a view controller during a segue

只需将您的 tableView 拖入 ViewController 并使其成为插座。然后就可以引用它的属性如self.tableView.reloadData()

在我将 tableView 添加为引用插座之前,此属性以及引用 tableView 的其他属性给了我错误。

希望这对未来的人有所帮助。

【讨论】:

  • 是的,我经常使用与您相同的方法。更容易
  • @lukeslvi:根据您对我的回答的评论以及这个回答,我无法确定您的问题是否已解决,还是仍然存在?
  • 不存在了。非常感谢。我将您的建议与另一个链接的建议结合起来。现在它可以工作了。
【解决方案3】:

我在使用 Swift 2、Xcode 7.2 时遇到了这个问题,我将拖到 StoryboardView Controller 更改为自定义的 UITableViewController 类,然后将 Table View 拖到 View Controller 上。我没有意识到我将它作为View 的子对象放置,它是我拖到Storyboard 的原始View Controller 的一部分。

我只是删除了View 并再次添加表视图作为超级视图的第一个子视图。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-09
    • 1970-01-01
    相关资源
    最近更新 更多