如何在编辑该单元格时选择UITableViewCell?

时间:2013-08-20 18:51:11

标签: ios object uitableview

我正在创建一个应用程序,它将不同的学生对象跟踪为一个类别。每个学生都有学生编号,姓名和金钱余额。我已经为它的工作方式创建了所有后端逻辑,并且我将所有学生都显示在UITableView中。然后我按下按钮,按下时会增加/减少所选学生的金钱价值。唯一的问题是每次我在表格视图中选择一个学生,然后按增量/减量金钱按钮,它将取消选择单元格。我希望该单元格保持选中状态,这样我就可以按下递增/递减金钱按钮。每次按下递增/递减金钱按钮时,我还需要更新单元格,以便它显示该学生在单元格中上下移动的钱。

这是递增/递减金钱按钮的代码之一:

- (IBAction)twentyDollarButton:(UIButton *)sender
{
        self.currentStudent.studentMoney += self.signValue * 20;
        [self updateUI];
}

- (EconoClassStudent *)currentStudent
{
    if (!_currentStudent) {
        _currentStudent = [[EconoClassStudent alloc] init];
    } else {
        NSIndexPath *indexPath = [self.testTableView indexPathForSelectedRow];

        NSArray *instructorClass = [self.instructorClass classAsArray];
        if (indexPath && [instructorClass count] > 0) {
            EconoClassStudent *student = instructorClass[indexPath.row];
            _currentStudent = student;
        }
    }

    return _currentStudent;
}

我的更新用户界面方法:

- (void)updateUI
{
    NSIndexPath *indexPath = [self.testTableView indexPathForSelectedRow];
    NSArray *indexPathsArray = [[NSArray alloc] initWithObjects:indexPath, nil];


    self.studentLabel.text = [NSString stringWithFormat:@"%u. %@\n$%d",
                              self.currentStudent.studentNumber,
                              self.currentStudent.studentName,
                              self.currentStudent.studentMoney];



    [self.testTableView reloadRowsAtIndexPaths:indexPathsArray withRowAnimation:NO];
}

一切都运行正常,但我只想在按下钱键的同时保持当前单元格保持选中状态。

任何帮助都会很棒!非常感谢你!

2 个答案:

答案 0 :(得分:1)

reloadRowsAtIndexPaths:withRowAnimation:在调用时取消选择单元格。

由于indexPath内已有- (void)updateUI且未修改表格视图,请尝试通过调用

再次以编程方式选择该行
[self.testTableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];

reloadRowsAtIndexPaths:withRowAnimation:之后。

答案 1 :(得分:1)

在XIB中,对于TableView,您可以将属性“编辑”设置为“编辑期间无选择”或“编辑期间的单个选择”。

此外,您可以手动呼叫:

[self.testTableView selectRowAtIndexPath:IndexPath animated:YES scrollPosition:UITableViewScrollPositionNone];

你的updateUI中的

。 希望有所帮助。