Iphone 使用不同的NIB文件扩展UIViewController

Iphone 使用不同的NIB文件扩展UIViewController,iphone,uitableview,inheritance,uiviewcontroller,Iphone,Uitableview,Inheritance,Uiviewcontroller,好吧,我肯定是做错了什么 我创建了一个BaseViewController,它是包含UITableView的匹配NIB文件的数据源和委托。该控制器主要负责从远程web服务获取数据、创建单元格和填充UITableView 现在我想创建一个SearchViewController,这样我就可以得到一个UISearchBar,用户可以输入搜索查询,将其发布到web服务上,获取结果并填充UITableView 但是,检索数据/填充UITableView的大部分代码都存在于BaseViewControll

好吧,我肯定是做错了什么

我创建了一个BaseViewController,它是包含UITableView的匹配NIB文件的数据源和委托。该控制器主要负责从远程web服务获取数据、创建单元格和填充UITableView

现在我想创建一个SearchViewController,这样我就可以得到一个UISearchBar,用户可以输入搜索查询,将其发布到web服务上,获取结果并填充UITableView

但是,检索数据/填充UITableView的大部分代码都存在于BaseViewController中。因此,我想到的第一件事是使用不同的NIB文件将SearchViewController创建为BaseViewController的扩展

我创建了名为SearchView的新NIB文件,其中包含一个UISearchBar和一个UITableView,并将这两个文件与文件所有者IBOutlets链接起来。UITableView IBOutlet正在从BaseViewController继承

最后,在MainWindow.xib中,我添加了一个TabBarController,并从IB链接了UINavigationController以加载SearchViewController,其中视图从SearchView加载。当我切换到“搜索”选项卡时,我得到一个带有错误的信号中止:

-[UITableViewController loadView]已加载SearchView nib,但未获取UITableView


有人能给我指出正确的方向吗?我相信大多数使用UITableView的人都通过扩展类重用了代码。这是正确的方法吗?

我不确定是否完全遵循了您的描述,但我认为您应该做的是将SearchViewController创建为BaseViewController的子类,如

@interface EventListViewController : UIViewController { ... }
这就是扩展BaseViewController的意思吗

然后你用[[SearchViewController alloc]initWithNibName:@SearchView bundle:nil]来创建你的SearchViewController?我通常在应用程序委托中以编程方式处理应用程序的初始视图加载


您得到的错误听起来好像您的IBOutlet连接有点错误。很遗憾,您不能像发布代码一样轻松地在此处发布nib文件。

是的,对不起,这正是我正在做的。我正在对BaseViewController进行子类化。抱歉,我来自不同的编程背景:问题可能是我没有调用initWithNibName,因为SearchViewController是从带有TabBarController的NIB加载的。在我的MainWindow.xib中,我添加了一个带有4个TabBar项的TabBar控制器。“搜索”选项卡栏是一个导航控制器,我已将UINavigationController设置为加载NIB SearchView…我总是在应用程序委托中以编程方式执行初始ViewController操作。几年前,试图在Interface Builder中实现这一点让我感到困惑,从那时起,我就没有任何理由再尝试一次。虽然,现在我已经在代码中这么多次了,IB连接对我来说可能更有意义。因此,如果您仍然有问题,我建议在应用程序代理中手动加载选项卡栏控制器等。基于此错误,我假设BaseViewController是从UITableViewController派生的,UITableViewController中有一个tableView字段。根据您的描述,我猜BaseViewController中也有一个tableView字段。这些假设和猜测正确吗?在SearchViewController nib中,什么连接到UIViewController视图插座?