我有一个在另一个类中调用的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;
}