gpt4 book ai didi

iphone - 为 TableView Controller 创建nib文件

转载 作者:行者123 更新时间:2023-12-03 19:05:50 26 4
gpt4 key购买 nike

我试图按照Table View Programming Guide for iPhone OS进行操作,但是无法创建一个新的Table View Controller来从nib文件加载其数据。

具体来说,我尝试遵循this part中的步骤:


  如果您希望加载表格视图
  由自定义表格视图管理
  笔尖文件中的控制器,您必须
  请执行下列操作:
  
  
  在Interface Builder中,创建一个空的Cocoa Touch nib文件(文件>
  新)。
  从接口生成器中拖动UITableViewController对象
  库进入笔尖文档窗口。
  将nib文件以适当的名称保存在项目目录中
  并在提示时选择
  将nib文件添加到的项目
  它。
  在笔尖文档窗口中选择Table View Controller,然后打开
  检查器的身份窗格。组
  您自定义表格视图的类
  控制器类。
  在笔尖文档窗口中选择文件的所有者,然后设置其类
  定制表视图的身份
  控制器类。
  在Interface Builder中自定义表视图。
  在笔尖文档窗口中选择表视图控制器,打开
  检查器的“属性”窗格,以及
  输入(或选择)笔尖的名称
  笔尖名称字段中的文件。
  


因此,我用Xcode创建了一个新的UITableViewController子类(称为“ MyTableViewController”),然后进入IB并遵循这些步骤。我确保将所有Class属性链接到与我在Xcode中创建的UITableViewController子类相同的名称,如步骤中所述。

但是现在我在IB中收到以下警告:


  “我的表视图控制器”兼具
  设置“视图”和“近端名称”属性。
  不支持此配置。


当我运行应用程序并推送表视图控制器时,它似乎出现了,但似乎根本没有从nib文件加载任何东西(例如,我将alpha设置为0而不是1)。

关于我在做什么错的任何想法吗?

谢谢您的帮助。



这里有一些更多的信息,可以帮助您更好地了解情况。

我注意到在使用模板创建UITableViewController(例如,通过创建新的基于导航的应用程序)与自己创建一个模板(例如,按照上述步骤)之间存在一些差异。我将分别将它们分别称为TemplateNib和CustomNib,以使其更容易理解它们之间的差异。

在TemplateNib中,它在文档窗口中具有以下对象:


文件的所有者
急救人员
表格检视


在CustomNib中,它在文档窗口中具有以下对象:


文件的所有者
急救人员
我的自定义表格视图控制器


表格检视



另一个区别是文件的所有者链接...

TemplateNib的文件的所有者:


网点
tableView->表格视图
视图->表格视图
参考插座
数据源->表格视图
委托->表格视图


CustomNib文件的所有者:


网点
查看->(无)


CustomNib我的表视图控制器:


网点
视图->表格视图(此视图为灰色,因此您无法将其删除)
参考插座
数据源->表格视图
委托->表格视图




更新:

我尝试按照以下步骤模仿模板创建的.xib文件:


在Interface Builder中创建了一个空文件。
将文件的所有者设置为从UITableViewController继承的类。
在文档窗口中添加了表格视图。
设置表视图的数据源并将其委托给文件的所有者。
将文件的所有者视图设置为表视图。
在UITableView类型的“标识”窗格中添加了tableView属性。
将文件的Owner tableView属性(我刚刚创建)设置为Table View。


但是,这似乎仍未从NIB文件加载它。 (尽管如此,我也从来没有在任何地方设置NIB文件的名称...在任何地方我需要设置它还是在寻找具有相同名称的文件?)。

然后,我尝试覆盖initWithNibName以从nib文件的名称加载,现在似乎确实从nib文件加载了它。但是,如果我查看TemplateNib表视图控制器的.m文件,则不需要重写此方法,那是为什么呢?我仍然认为我这样做的方式是错误的,因为《编程指南》并未提及有关这样做的任何信息。



更新:

我尝试使用差异工具比较两个.xib文件,两者之间的唯一显着区别似乎是:

<string key="superclassName">UITableViewController</string>
// and:
<reference key="NSSuperview"/>


我在原始文件的任何地方都看不到对Nib文件的引用,是否还应该检查其他文件?



更新:

看起来使得从nib文件加载TemplateNib的事情是在MainWindow.xib(模板给定的默认名称)中,添加了RootViewController并带有NIB Name属性,其值为“ RootViewController”。此外,其类设置为“ RootViewController”。

我尝试在RootViewController的initWithNibName:bundle:和initWithStyle:中都设置一个断点,但是,它从未到达过那里。我有点想知道在这样在MainWindow.xib中进行设置时如何创建TableViewController。

我还尝试将我的自定义表视图控制器添加到MainWindow.xib,设置类和笔尖名称,希望它可以从我指定的笔尖文件中加载它,但它甚至不调用iniWithNibName。

最佳答案

在Xcode中创建TableViewController。
在Interface Builder中创建一个空的nib文件。
从步骤1将File的Owner Class属性设置为TableViewController。
将TableView添加到空的nib文件。
将文件的“所有者”视图属性设置为步骤4中的TableView。
根据需要在IB中自定义TableView。
在Xcode中为您创建的TableViewController覆盖initWithNibName:bundle:方法,并使用类似于以下代码:




- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if (self = [super initWithNibName:@"MyNibName" bundle:nibBundleOrNil]) {
// Custom initialization
}
return self;
}

关于iphone - 为 TableView Controller 创建nib文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1532967/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com