表格单元格错误

时间:2015-02-18 10:00:00

标签: ios objective-c uitableview

我在一个视图控制器中有两个表视图。

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

if (tableView.tag==0) {

              TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
              if (!cell) {
             cell=[[TableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell"];
        }

           int storyIndex = [indexPath indexAtPosition: [indexPath length] - 1];

           cell.title.text=[[stories objectAtIndex: indexPath.row] objectForKey: @"title"];

           cell.title.numberOfLines=6;

           return cell;}
    else
        {
            static NSString *CellIdentifier2 = @"Cell2";

            TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier2];
            if (cell == nil)
            {
                cell = [[TableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier2] ;
            }
            int row =indexPath.row;

            if (row==0) {
                cell.title.text =@"All Songs";
            }
            else
            cell.title.text = [categoryArray objectAtIndex:indexPath.row-1];


            return cell;}

    }

对于第一个(tableView.tag == 0)表,一切都没问题,但对于第二个:

2015-02-18 11:53:11.733 Karaoke Final Project[2722:808305] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITableViewCell title]: unrecognized selector sent to instance 0x7fb4d2c48bb0'

对于两个表视图单元格,我设置了相同的类TableViewCell。

如果tableView.tag!= 0我放

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier2];


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

我没有问题。

3 个答案:

答案 0 :(得分:0)

所有单元格对象都是UITableViewCell类型,因为您将它们分配为此类型。据我所知UITableViewCell没有名为“title”的属性。

TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];

它不会使您的对象TableViewCell类型。它只是创建这种类型的指针。它有效,因为您从UITableViewCell中的TableViewCell继承。

你应该试试这个:

cell = [[TableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier2] ;

而不是:

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier2] ;

两种情况。

答案 1 :(得分:0)

cell=[[TableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell"];

单元格类型的返回类型为UITableViewCellStyleSubtitle,因此此样式没有属性title

你必须使用

cell.textLabel.text = @"Title";

cell.detailTextLabel.text = @"Details";

答案 2 :(得分:0)

        static NSString *CellIdentifier2 = @"Cell2";
        TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier2];
        if (cell == nil)
        {
             NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"SimpleTableCell" owner:self options:nil];
             cell = [nib objectAtIndex:0];
        }

使用上面的代码....有关详细信息,请访问此链接..

http://www.appcoda.com/customize-table-view-cells-for-uitableview/