UITableViewController loadView 加载了“2-view-3”笔尖,但没有得到 UITableView

Posted

技术标签:

【中文标题】UITableViewController loadView 加载了“2-view-3”笔尖,但没有得到 UITableView【英文标题】:UITableViewController loadView loaded the "2-view-3" nib but didn't get a UITableView 【发布时间】:2013-12-14 20:00:46 【问题描述】:

我在 IB 中有一个 UIViewController 和一个 UITableView。它构建得很好,但是当我运行它时它会因错误而崩溃:

[UITableViewController loadView] 加载了“2-view-3” nib 但没有得到 UITableView

我正在使用情节提要。我的视图是 UIViewController 而不是 UITableViewController,但它似乎期望它正在加载 UITableViewController。在 IB 中,我将 UIViewController 的类设置为我的自定义 UIViewController 类,它的类型为 UIViewController。

我想在我的项目中使用的代码在这里:https://github.com/daria-kopaliani/DAContextMenuTableViewController

但它使用 UITableViewController。我的项目使用带有 UITableView 的 UIViewController。演示项目的 IB 层次结构如下:

但我有如下:

我的自定义 UIViewController 的 .h 顶部如下所示:

不确定我是否可以将上述项目与 UITableViewController 以外的任何东西一起使用,但这就是我想要做的。

更新:

 (void)viewDidLoad

[super viewDidLoad];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refresh) name:@"refreshTable" object:nil];

[NSFetchedResultsController deleteCacheWithName:nil];

[self initializeDateFormatter];
[self initializeTimeFormatter];

if (self.managedObjectContext == nil) 
    self.managedObjectContext = [[MVCoreDataController sharedInstance] newManagedObjectContext];


self.tblList.delegate = self;
self.fetchedResultsController.delegate = self;
self.tblList.dataSource = self;
self.myNavBar.delegate = self;

// Do any additional setup after loading the view, typically from a nib.


UPDATE 2(为 MVContextMenuTableViewController 添加接口):

#import <UIKit/UIKit.h>
#import "MVContextMenuCell.h"
#import "MVOverlayView.h"


@interface MVContextMenuTableViewController : UITableViewController <MVContextMenuCellDelegate, MVOverlayViewDelegate,     UITableViewDelegate>

@property (readonly, strong, nonatomic) MVContextMenuCell *cellDisplayingMenuOptions;
@property (assign, nonatomic) BOOL shouldDisableUserInteractionWhileEditing;

- (void)hideMenuOptionsAnimated:(BOOL)animated;

@end

这个错误是什么意思,我该如何追踪它?

【问题讨论】:

你能贴出试图实例化你的自定义vc的代码吗?还是它试图加载一个 segue? @danh 你的意思是我的自定义 UIViewController 的初始化吗? 我在想触发 vc 展示的代码。 当应用程序启动时,带有 UITableView 的 VC 将作为我的根视图控制器呈现 - 在 didFinishLaunchWithOptions 中,除了返回 YES 之外什么都没有。不确定您要什么代码,但我也可以使用 viewDidLoad 方法更新帖子。 MVContextMenuTableViewController 的界面是什么样的? 【参考方案1】:

您说您有一个UIViewController,但实际上MVViewControllerUITableViewController 的一种类型,通过两级继承。

假设您已将情节提要中的 mainVC 类设为 MVViewController,那么它需要一个表视图作为其主要视图是合法的。

您似乎需要将@interface MVContextMenuTableViewController : UITableViewController... 更改为@interface MVContextMenuTableViewController : UIViewController...

【讨论】:

这很有帮助,但是当我进行更改时,MVContextMenuTableViewController.m 文件中出现错误,因为它引用了一个名为 tableView 的 UITableView 作为层次结构中的主视图 - 我的自定义表视图 - tblGoalsList - 不能在 MVContextMenuTableViewController 中引用。 显然我不知道MVContextMenuTableViewController 里面有什么,所以我不知道这是否可行,但是...如果您将tableView 插座连接到您的UITableView 子视图会怎样? (就此而言,如果您在使用超类时遇到问题,也许您应该使用 @interface MVViewController:UIViewController...。) 您最后的评论是正确的。我将 MIViewController 改回 UIViewController 并修复了我在 IB 中的层次结构中遇到的一些其他问题,现在它正在工作。非常感谢您的帮助。

以上是关于UITableViewController loadView 加载了“2-view-3”笔尖,但没有得到 UITableView的主要内容,如果未能解决你的问题,请参考以下文章

什么叫LOA认证 应急灯申请SANS1464-22测试 法规解读

如何将选定的 UITableViewController 值添加到以前的 UITableViewController?

在动态 UITableViewController 的标头中嵌入静态 UITableViewController

当转到另一个 UITableViewController 时 UITableViewController 冻结

重新加载 UITableViewController

删除单元格 - UITableviewController