我正在创建一个应用程序,它将不同的学生对象跟踪为一个类别。每个学生都有学生编号,姓名和金钱余额。我已经为它的工作方式创建了所有后端逻辑,并且我将所有学生都显示在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];
}
一切都运行正常,但我只想在按下钱键的同时保持当前单元格保持选中状态。
任何帮助都会很棒!非常感谢你!
答案 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];
。 希望有所帮助。