我有UITableView,如果选择了任何行,我会存储一些值。如果选择了任何其他行,我将显示一个alertView,警告他之前的选择将会消失。这个alerView有2个按钮YES和NO。如果选择是,则继续选择新行即可。但如果没有被选中,我想重新选择前一行。如果被问到,我可以发布代码。但它似乎比面向代码更具逻辑性。
谢谢。
答案 0 :(得分:1)
首先将点击的tableview索引存储到UITableView Delegate
中的全局变量,如下所示
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (tableView==yourTableview) {
yourMemberVariable=[indexPath row];
}
}
然后在yourMemberVariable
UIAlertView delegate
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
if(buttonIndex == 0)//OK button pressed
{
//do something
}else{
if(yourMemberVariable>someValue){ //perform your own conditions whatever
[myTableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:yourMemberVariable inSection:0] animated:NO scrollPosition:UITableViewScrollPositionTop];
}
}
}
答案 1 :(得分:1)
您想知道所选的最后一行,您可以通过设置
来完成此操作 tableView.remembersLastFocusedIndexPath = true
在viewDidLoad函数中。
然后调用
tableView.indexPathForSelectedRow
需要的地方。
答案 2 :(得分:0)
这很简单。只需将上一行保存到类成员中。祝你好运!
答案 3 :(得分:0)
跟踪上次选择的项目。在表的select委托中,将选择的内容存储在可通过类访问的变量中。
NSInteger selectedRow = 0;
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
selectedRow = [indexPath row];
}
现在您知道在UIAlertView委托中按下NO时要选择的元素
[myTableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:selectedRow inSection:0] animated:NO scrollPosition:UITableViewScrollPositionTop];