objective c - 将对象数组传递给表视图

时间:2014-09-21 09:24:05

标签: objective-c uitableview

我需要传递类对象的数组 我有一个名为Student的类,它有一些属性(名称,代码,account_type ....);

我在数据库中调用方法来让所有学生反对

Student_array = [data_base_helper selectAllStudents];

我需要在表格视图中显示学生姓名列表,我制作了名为

的花药数组
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [Student_array count];
}


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

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cell_identifer forIndexPath:indexPath];

    // Configure the cell...
    if (cell == nil) {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cell_identifer];
    }



 for(Student * st in student_array){
        [self.names  addObject:st.student_name];
    }

    cell.textLabel.text = [names objectAtIndex:indexPath.row ];

    return cell;
}

我发现一些删除问题,因为我通过索引构思删除了如何在表视图中传递对象数组

2 个答案:

答案 0 :(得分:2)

您的想法是,您不需要使用"名称数组",您可以直接使用您的Students数组:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [Student_array count];
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString * cell_identifer = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cell_identifer forIndexPath:indexPath];
    // Configure the cell...
    if (cell == nil) {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cell_identifer];
    }

    Student *student = Student_array[indexPath.row];
    cell.textLabel.text = student.student_name;

    return cell;
}

如果您需要从tableView中删除学生,您可以轻松地从数组中删除,然后相应地更新tableView,如下所示:

[Student_array removeObjectAtIndex:indexPath.row];
[self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];

请注意,在上面的代码中,我假设您要删除给定indexPath.row处的对象,并且Student_array是NSMutableArray而不是NSArray

ps:您可能想要在Student_array中重命名students,因为在Objective-c中,使用大写字母命名对象并使用下划线并不是一个好习惯。可能我也会在student_name中重命名name,因为学生只是重复了对象的类型。

答案 1 :(得分:0)

当您从表删除单元格中删除单元格时,对应于已删除单元格的数组Student_array和self.name数组。