我有一个在另一个类中调用的UITableView类

 MyPocketTableView * myPocketTableView = [[MyPocketTableView alloc]initWithFrame:CGRectMake(85, 153, 235, 250) style:UITableViewStyleGrouped];


但是,UITableViewClass中的init方法不允许我这样做。

@implementation MyPocketTableView

- (id) initWithFrame:(CGRect)frame style:(UITableViewStyle)style {
    self = [super initWithFrame:frame];
    self = [super initWithStyle:style]

    if (self) {

        //[self setFrame:CGRectMake(85, 153, 235, 250)];
        self.dataSource = self;
        self.delegate = self;

    }
    return self;
}


我无法在init方法定义中添加style:(UITableViewStyle)风格,也不能执行self = [super initWithStyle:style],因为它抱怨说


  'UITableView'的可见@interface没有声明选择器initWithStyle。


创建类时存在的默认初始化方法为- (id) initWithFrame:(CGRect)frame。 MyPocketTableView是UITableView的子类。

  @interface MyPocketTableView : UITableView <UITableViewDataSource,UITableViewDelegate>

最佳答案

您需要将接口设置为UITableViewController,然后使用initWithStyle:

另外,在执行以下操作时,无需设置UITableView协议委托

@interface MyPocketTableView : UITableViewController


然后,您可以致电:

MyPocketTableView * myPocketTableView = [[MyPocketTableView alloc] initWithStyle:UITableViewStyleGrouped];


以及以下内容:

- (id) initWithStyle:(UITableViewStyle)style
{
    self = [super initWithStyle:style];
    if (self) {
        [self setFrame:CGRectMake(85, 153, 235, 250)];
    }
    return self;
}


您还可以使用以下(示例)自定义方法:正在调用的密钥:


  self = [super initWithStyle:UITableViewStyleGrouped];


- (id) initWithSomeCustomMessage:(NSString*)message
{
    self = [super initWithStyle:UITableViewStyleGrouped];
    if (self) {
        [self setFrame:CGRectMake(85, 153, 235, 250)];
        self.customMessage = message;
    }
    return self;
}

10-04 22:53