ios - 如何以编程方式更改 UITableView 的类?

标签 ios iphone objective-c uitableview

我有一个 UITableViewController 并且不想使用 Storyboard。

据我所知,UITableViewController 负责初始化 UITableView,将其连接到其数据源和委托(delegate)。这对我来说非常有效。

我现在想将 UITableView 的类更改为自定义类 ( BVReorderTableView )。这在 IB 中很容易完成。但是,一旦我以编程方式执行此操作,我的 UITableView 就是空的,也就是说,它似乎与其源和委托(delegate)断开了连接。

这是我在 UIViewController 的 init 中所做的事情:

-(id)init
{
    self = [super initWithStyle:UITableViewStyleGrouped];
    if (self) {
        // Custom initialization
        self.tableView = [[BVReorderTableView alloc] initWithFrame:self.view.bounds  style:UITableViewStyleGrouped];
        self.tableView.dataSource = self;
        self.tableView.delegate = self;
}

我做错了什么?

最佳答案

由于 ViewController 生命周期的原因,您应该在 viewDidLoad 而不是 init 中实现此功能。在 viewDidLoad 中,他已经拥有了将要使用的所有对象,但这在 init 期间不一定是正确的。

您可以查看this question有关 ViewController 生命周期的更多信息。 :)

关于ios - 如何以编程方式更改 UITableView 的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20067199/

相关文章:

ios - 在将其解析为 JSON 文件 Swift 后声明类型

ios - 如何使用自定义布局跳转到 UICollectionView 中的任意 Cell?

iphone - subview 外的 UIButton 可点击区域

objective-c - 实现一个将 block 用作回调的方法

objective-c - iOS ViewController 属性在推送新 Controller 并在导航 Controller 中再次返回后消失

ios - 无法在 Firebase 中获取节点的值

ios - flutter ios "Could not build the application for the simulator."

ios - WatchKit 项目无法识别 presentAudioRecordingControllerWithOutputURL

ios - 如何以编程方式创建和使用 UIcollectionView?

ios - 将NSString添加到NSMutableString