iPhone Subclassing视图控制器和IBOutlet UITableView

时间:2011-02-07 13:08:38

标签: iphone ios uitableview uiviewcontroller subclassing

我有以下问题。我创建了一个与上面的

非常相似的ViewController
@interface MyViewController : UIViewController {
    IBOutlet UITableView *myTableView;
}

@property (nonatomic, retain) IBOutlet UITableView *myTableView;

我已将Interface Builder上的myTableView链接到匹配的nib的UITableView。我已经将MyViewController子类化为创建YourViewController:

@interface YourViewController : MyViewController {

}

然后我从TabBarController加载一个标签项上的YourViewController。虽然我可以看到MyViewController确实在最后被调用,但模拟器上没有显示表视图。

我已经尝试调试MyViewController,看起来IBOutlet是零。

为什么?

5 个答案:

答案 0 :(得分:0)

我遇到了继承和IBOutlets以及IBAction的主要问题。我建议你避免这种情况,并以另一种方式创建共享内容。

例如,在获取内存警告时,我受到了严重的攻击。当在基类和派生类中定义出口和动作时,它们没有正确地重新连接。

答案 1 :(得分:0)

可能根本没有加载MyViewController的nib文件。您是否在为YourViewController使用特定的nib文件?以及在哪种方式创建YourViewController。

您是否也可以尝试在YourViewController中定义“awakeFromNib”方法,然后从中调用[super awakeFromNib]?

但是要了解您的问题,您必须清楚地解释如何加载对象以及使用Nib的位置和位置?

答案 2 :(得分:0)

如果使用代码动态添加它,那么只有它可以工作。不使用Nib。

答案 3 :(得分:0)

UITableView(即你的myTableView)需要代理数据源及其控制权。 并且您的控制器需要指向xib中表视图的链接。

  1. 在控制器的接口部分声明表委托协议。

  2. 使用IB,将xib中的TableView链接到所有者文件:delegates。

  3. 使用IB,将文件所有者myTableView链接到xib中的tableView。

  4. 我希望它会有所帮助。

答案 4 :(得分:-1)

假设您在MainWindow.xib中拥有整个导航堆栈

  • 打开MainWindow.xib
  • 选择YourViewController(或者调用子类化UITableViewController的控制器)
  • 选择属性检查器
  • 确保'NIB Name'属性具有正确的YourViewController(或任何名称)选择

我有同样的问题,这为我解决了。