我有一个在另一个类中调用的 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]
因为它提示说
No visible @interface for 'UITableView' declares the selector initWithStyle.
创建类时默认的 init 方法是 - (id) initWithFrame:(CGRect)frame
。 MyPocketTableView 是 UITableView 的子类。
@interface MyPocketTableView : UITableView <UITableViewDataSource,UITableViewDelegate>
最佳答案
需要将接口(interface)设置为UITableViewController
,然后使用initWithStyle:
。
此外,在执行以下操作时,无需设置 UITableView 协议(protocol)委托(delegate)
@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;
}
您还可以使用以下(示例) 自定义方法:您正在调用的 key :
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;
}
关于iphone - 设置 UITableView 的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12887621/