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
,但实际上MVViewController
是UITableViewController
的一种类型,通过两级继承。
假设您已将情节提要中的 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