Def*_*Day 0 iphone objective-c interface-builder uitableview ios
我有一个简单的请求,我花了很多时间(令人尴尬)..
我已经对UITableView进行了分类以添加一些功能.这些新功能需要像NSMutableSet这样需要分配/初始化的东西.
我把对象的初始化例程放在了
- (id)initWithFrame:(CGRect)frame style:(UITableViewStyle)style {
Run Code Online (Sandbox Code Playgroud)
我从苹果文档中理解为正确 - 但这不会被调用(通过对代码的断点来确定).
我正在使用IB,并将其拖到UITableView视图上,并将其类更改为我的新子类.没有UITableViewController.我也尝试过:
- (void)loadView {
- (id)init {
- (id)initWithFrame:(CGRect)frame {
Run Code Online (Sandbox Code Playgroud)
没有成功.我希望这个课程既可以使用IB,也可以在将来以编程方式工作.一切都与这个初始化的位置有关.
当对象从XIB文件加载时,它们会得到-(id)initWithCoder:(NSCoder*)coder.
如果您以编程方式从XIB创建对象,则需要同时实现指定的初始化程序,-initWithFrame:style: 并 -initWithCoder:在每个初始化程序中执行所有初始化程序.
保持这两者同步可能会很痛苦,因此大多数人都喜欢将初始化内容分解为私有方法,通常称为私有方法-commonInit.
您可以在一些Apple示例代码中看到此示例:HeadsUpUI.
- (void)commonInit
{
self.userInteractionEnabled = YES;
}
- (id)initWithFrame:(CGRect)frame
{
if (self = [super initWithFrame:frame])
{
[self commonInit];
}
return self;
}
- (id)initWithCoder:(NSCoder *)aDecoder
{
if (self = [super initWithCoder:aDecoder])
{
[self commonInit];
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5311 次 |
| 最近记录: |