iPhone子类化视图控制器和IBUITableView
我有以下问题。我已经创建了一个与上面非常相似的ViewControlleriPhone子类化视图控制器和IBUITableView,iphone,ios,uitableview,uiviewcontroller,subclassing,Iphone,Ios,Uitableview,Uiviewcontroller,Subclassing,我有以下问题。我已经创建了一个与上面非常相似的ViewController @interface MyViewController : UIViewController { IBOutlet UITableView *myTableView; } @property (nonatomic, retain) IBOutlet UITableView *myTableView; 我已将Interface Builder上的myTableView链接到匹配nib的UITableView。我
@interface MyViewController : UIViewController {
IBOutlet UITableView *myTableView;
}
@property (nonatomic, retain) IBOutlet UITableView *myTableView;
我已将Interface Builder上的myTableView链接到匹配nib的UITableView。我对MyViewController进行了子类化,以创建您的ViewController,如下所示:
@interface YourViewController : MyViewController {
}
然后我从tabbar控制器加载选项卡项上的YourViewController。虽然我可以看到MyViewController确实在最后被调用,但仿真器上没有显示任何表视图
我试着调试MyViewController,结果发现IBOutlet的值为零
为什么会这样?我在继承、IBOutlets和IBAction方面遇到了一些重大问题。我建议你避免这样做,用另一种方式创建共享内容
例如,当我收到内存警告时,我受到了错误的严重打击。当在基类和派生类中定义出口和操作时,它们没有正确地重新连接。我遇到了继承、IBOutlets和IBAction的主要问题。我建议你避免这样做,用另一种方式创建共享内容
例如,当我收到内存警告时,我受到了错误的严重打击。在基类和派生类中定义出口和操作时,它们没有正确地重新连接。可能根本没有加载MyViewController的nib文件。您是否为ViewController使用特定的nib文件?您以何种方式创建ViewController 您是否也可以尝试在ViewController中定义一个“awakeFromNib”方法,然后从中调用[super awakeFromNib]
但是,为了理解您的问题,您必须清楚地解释如何加载对象以及是否以及在何处使用nib?可能根本没有加载MyViewController的nib文件。您是否为ViewController使用特定的nib文件?您以何种方式创建ViewController 您是否也可以尝试在ViewController中定义一个“awakeFromNib”方法,然后从中调用[super awakeFromNib]
然而,为了理解您的问题,您必须清楚地解释如何加载对象以及是否以及在何处使用NIB?如果您使用代码动态添加NIB,那么只有它才能工作。不使用Nib。如果使用代码动态添加它,那么只有它才能工作。不使用Nib。UITableView(即您的myTableView)需要数据源及其控制的委托。 控制器需要一个指向xib中表视图的链接
我希望它能有所帮助。UITableView(即myTableView)需要委托人来管理数据源及其控制。 控制器需要一个指向xib中表视图的链接
我希望它会有所帮助。假设您在MainWindow.xib中有整个导航堆栈
- 打开MainWindow.xib
- 选择您的ViewController(或调用子类化UITableViewController的任何控制器)
- 选择属性检查器
- 确保“NIB名称”属性选择了正确的YourViewController(或任何名称)
我遇到了完全相同的问题,这为我解决了。假设您的整个导航堆栈都在MainWindow.xib中
- 打开MainWindow.xib
- 选择您的ViewController(或调用子类化UITableViewController的任何控制器)
- 选择属性检查器
- 确保“NIB名称”属性选择了正确的YourViewController(或任何名称)
我遇到了完全相同的问题,这为我解决了它。您对如何实现这一点有什么建议吗?我的所有子类都在做与MyViewController完全相同的事情,唯一改变的是在每个子类上检索数据的方式。我觉得is与initCoder有关:这应该是一个标准的子类场景……好吧,我会将所有繁重的工作保留在基类中,并且尽可能只在派生类中有出口和操作。您对如何实现这一点有什么建议吗?我的所有子类都在做与MyViewController完全相同的事情,唯一改变的是在每个子类上检索数据的方式。我有一种感觉,这与initCoder有关:这应该是一个标准的子类场景……好吧,我会将所有繁重的工作保留在基类中,并且尽可能只在派生类中有出口和操作。我认为您在这里走的是对的。YourViewController正在通过nib加载。(它被指定为选项卡栏项目的NIB)如果我使用initWithNibName加载YourViewController,它可以正常显示MyViewController的NIB。但是,当从TabBar Nib加载时,它不会显示任何内容。我已经按照你的建议从笔尖上醒来了,但还是没有反应1.我认为你在这方面做得对。YourViewController正在通过nib加载。(它被指定为选项卡栏项目的NIB)如果我使用initWithNibName加载YourViewController,它可以正常显示MyViewController的NIB。但是,当从TabBar Nib加载时,它不会显示任何内容。我已经试着按照你的建议从笔尖上唤醒,但是仍然没有任何结果。没有办法通过笔尖加载它吗?即使我们用编码器覆盖initWithCoder:比方说?所以我尝试过用重载initWithCoder来调用initWithNibName,它确实可以工作,尽管现在看起来它有一个问题