2

我是 iOS 开发的新手,我正在为我的 UITableView 问题寻求帮助。

好吧,我正在研究有关 UITableView 代码的所有内容,并且在开发过程中,当我尝试重用标识符时(如果界面上没有要创建的单元格),XCode 会显示以下消息:

“'UITableView' 没有可见的@interface 声明选择器'initWithStyle:reuseIdentifier:”

有代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *identifier = @"Cell";

    UITableView *cell = [tableView dequeueReusableCellWithIdentifier:identifier];

    if(cell ==nil)
    {
        cell = [[[UITableView alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier] autorelease];
    }

有人可以在这里帮助我吗?

4

4 回答 4

4
UITableView *cell = [tableView dequeueReusableCellWithIdentifier:identifier];

应该

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];

你应该分配一个UITableViewCell 不像UITableView 你在这里所做的那样。

   //should be **UITableViewCell**
      cell = [[[UITableView alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier] autorelease];

并且不要忘记稍后归还。

return cell;
于 2012-07-06T11:37:57.360 回答
1

错误消息说明了一切。您在错误的类上调用该方法...您只需要设置类并分配 aUITableViewCell而不是UITableView

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *identifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];

    if(cell == nil)
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier] autorelease];
    }

    // ...
于 2012-07-06T11:37:57.043 回答
0

使用以下代码而不是您的代码。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

     static NSString *CellIdentifier = @"Cell";
        UITableViewCell *cell=(UITableViewCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

        if (cell==nil) {
            cell=[[UITableViewCell alloc]initWithFrame:CGRectZero];
        }
于 2012-07-06T11:40:33.380 回答
0

拯救了我的一天。用这段代码替换了我的代码 - 评论了 - 并且它工作了。不知道为什么!但谢谢。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
//  static NSString *identifier = @"cell";
//  UITableViewCell *cell = [tableView dequeueReusableCellWithIndentifier:@"cell"];

        static NSString *CellIdentifier = @"cell";
        UITableViewCell *cell=(UITableViewCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];


    if (cell == nil ) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        cell.accessoryType = UITableViewCellAccessoryNone;
    }
    return cell;
}
于 2013-10-09T12:29:54.030 回答