我的UIViewController类实现有以下代码:
- (void)viewDidLoad {
CustomUITableView *customUITableView = [[CustomUITableView alloc] initWithFrame:self.view.frame];
[self.view addSubview:customUITableView];
[super viewDidLoad];
}
当我运行应用程序时,表格显示就好了。我对这种方法有两个问题:
我知道我可以通过为UITableView分配一个自定义类来在StoryBoard中实现这一点,但是我想看看我能用多远的代码来完成代码。我的目标是使用StoryBoard排列布局,但在运行时分配我想要的自定义类。
有人知道这是否可行?示例代码确实会有所帮助。感谢信。
答案 0 :(得分:1)
您可以从界面构建器加载常规UITableView,然后使用您感兴趣的参数从UITableView初始化CustomUITableView。
- (void)viewDidLoad {
//Your tableView was already loaded
CustomUITableView *customUITableView = [[CustomUITableView alloc] initWithFrame:tableView.frame style:tableView.style];
customUITableView.backgroundColor = tableView.backgroundColor;
//...
//... And any other properties you are interested in keeping
//...
[self.view addSubview:customUITableView];
[super viewDidLoad];
}
如果您确保在界面构建器中指定您认为要修改的每个属性,则此方法将起作用。只需确保在复制属性后删除通过nib加载的UITableView。
答案 1 :(得分:0)
Class MyTableClass = NSClassFromString(@"WhateverClass");
id newTableView = [[MyTableClass alloc] init];
[newTableView performSelector:@selector(someSel:)];
确保首先设置数据源和委托以及原始nib实例化视图中的任何属性 然后,您可以将本地tableview属性设置为此新对象,只要ivar具有正确的强制转换,您就可以在其上调用方法,而无需像上面那样使用运行时调用。
如果您想以不同的方式进行操作,也可以深入了解obj-c运行时。 https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ObjCRuntimeRef/Reference/reference.html