initWithStyle:CGRectZero 将“const CGRect”发送到不兼容类型的参数

Posted

技术标签:

【中文标题】initWithStyle:CGRectZero 将“const CGRect”发送到不兼容类型的参数【英文标题】:initWithStyle:CGRectZero sending 'const CGRect' to parameter of incompatible type 【发布时间】:2014-09-28 18:01:11 【问题描述】:

我正在处理这段代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:nil];
if (cell == nil) 
    cell = [[[UITableViewCell alloc] initWithStyle:CGRectZero reuseIdentifier:nil] autorelease];

//cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

并首先替换

initWithFrame: 

initWithStyle: 

上面,因为我收到了initWithFrame:reuseIdentifier deprecated 错误。

但是,现在我遇到了一个新错误:

Sending 'const CGRect' (aka 'const struct CGRect') to parameter of incompatible type 'UITableViewCellStyle' (aka 'enum UITableViewCellStyle'). 

此错误专门指向上面initWithStyle:CGRectZero 中的CGRectZero

我已经搜索过,但无法弄清楚这一点。有谁知道如何解决这个问题? 提前致谢! :)

【问题讨论】:

您是否真的阅读过错误信息并试图理解它???? (你看过 UITableViewCell 的文档了吗????) 【参考方案1】:

style 参数必须是 UITableViewCellStyle enumeration values 之一:

typedef enum : NSInteger 
   UITableViewCellStyleDefault ,
   UITableViewCellStyleValue1 ,
   UITableViewCellStyleValue2 ,
   UITableViewCellStyleSubtitle 
 UITableViewCellStyle;

如果您仔细观察,您会发现CGRectZero 不在列表中。通常,当您更改语句以发送不同的消息时,您应该期望需要更改作为消息参数传递的值。

【讨论】:

以上是关于initWithStyle:CGRectZero 将“const CGRect”发送到不兼容类型的参数的主要内容,如果未能解决你的问题,请参考以下文章