UITableView Custom Cell无法正常工作

时间:2013-10-31 09:57:13

标签: ios iphone uitableview

尝试使用自定义单元格创建表格视图。 我看了几个教程,但没有打开一个新项目,而是一步一步地进行。 我试着用我现在的那个做。这样我就可以解决问题并了解更多信息。

所以这里我到目前为止所做的步骤: 简单的tableview:

enter image description here

(WorkoutList.xib)

WorkoutList.h(您在上图中看到的是exerciseTableView)

enter image description here

WorkoutList.m:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.workoutTableView.dataSource = self;
    self.workoutTableView.delegate = self;

    TitleArray = [[NSArray alloc] initWithObjects:@"First", @"Second", @"Third", nil];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return TitleArray.count;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 60;
}

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

    WorkoutCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (!cell)
    {
        cell = [[WorkoutCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    cell.workoutTitle.text = [TitleArray objectAtIndex:indexPath.row];
    cell.workoutImage.image = [UIImage imageNamed:@"list-item-icon3"];

    return cell;
}

WorkoutCell.xib:

enter image description here

自定义类是:WorkoutCell 标识符是:Cell

WorkoutCell.h:

enter image description here

我所看到的只是一个空的TableView ..

我知道这是一个很长的问题,但对我来说理解它并看出我的错误在哪里非常重要。非常感谢!

3 个答案:

答案 0 :(得分:1)

在viewcontroller.h文件中,请确保在界面中添加<UITableViewDataSource, UITableViewDelegate>,如下所示:

@interface myViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>

同样在.xib文件中选择UITableView并将数据源和委托连接到文件所有者,将tableView连接到workoutTableView,如下面的屏幕截图所示:

enter image description here

最后在Workoutecell xib中,选择文件所有者并将视图控制器添加到自定义类。

答案 1 :(得分:0)

这里不需要创建.h和.m文件..只需创建WorkoutCell.xib文件..然后在File Inspecter(RHS)中为UIImageview(标记1)和UILabel(tag2)设置标记值...然后写cellForRowAtIndexPath中的以下代码

        static NSString *MyIdentifier = @"WorkoutCellIdentifier";
            UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];

            // If no cell is available, create a new one using the given identifier.
            if (cell == nil) {
                // Use the default cell style.
                NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"WorkoutCell" owner:self options:nil];
                cell = [nib objectAtIndex:0];
            }

            UIImageView *img = (UIImageView *) [cell viewWithTag:1];
            [img setImage:[UIImage imageNamed:@"your image"]];
            UILabel *lbl=(UILabel *)[cell viewWithTag:2];
            [lbl setText:@"your Text"];
            }
     }

答案 2 :(得分:0)

此外,您有TitleArray.count,就好像它是一个属性。 count是数组上的一个方法。你需要调用它,如下所示

return [TitleArray count];