Ios UITableView中最后选定的行
我有UITableView,如果选择了任何一行,我将存储一些值。如果选择了任何其他行,我将显示一个alertView,警告他之前的选择将消失。此alerView有两个按钮YES和NO。如果选择YES,则继续选择新行,这很好。但如果选择“否”,我希望重新选择上一行。如果有人问我,我可以发布代码。但这似乎更多的是逻辑问题,而不是面向代码的问题Ios UITableView中最后选定的行,ios,objective-c,uitableview,Ios,Objective C,Uitableview,我有UITableView,如果选择了任何一行,我将存储一些值。如果选择了任何其他行,我将显示一个alertView,警告他之前的选择将消失。此alerView有两个按钮YES和NO。如果选择YES,则继续选择新行,这很好。但如果选择“否”,我希望重新选择上一行。如果有人问我,我可以发布代码。但这似乎更多的是逻辑问题,而不是面向代码的问题 谢谢。很简单。只需将上一行保存到类成员中。祝你好运 跟踪最后选定的项目。在表的select委托上,将所选内容存储在可通过类访问的变量中 NSInteger s
谢谢。很简单。只需将上一行保存到类成员中。祝你好运 跟踪最后选定的项目。在表的select委托上,将所选内容存储在可通过类访问的变量中
NSInteger selectedRow = 0;
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
selectedRow = [indexPath row];
}
现在,您知道了在UIAlertView委托中按“否”时要选择的元素
[myTableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:selectedRow inSection:0] animated:NO scrollPosition:UITableViewScrollPositionTop];
首先将单击的tableview索引存储到全局变量的
UITableView委托中,如下所示
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (tableView==yourTableview) {
yourMemberVariable=[indexPath row];
}
}
然后在UIAlertView委托中选中yourMemberVariable
- (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];
}
}
}
如果要知道最后选定的行,可以通过设置
tableView.remembersLastFocusedIndexPath = true
在viewDidLoad函数中
然后打电话
tableView.indexPathForSelectedRow
在需要的地方 那么您的问题是什么?如何获取最后选定的行?AFAIK uitableview不保存历史记录,因此没有内置方法。您可以基于uitableview编写自己的类并保存历史记录,但我认为这很难。即使在用户第一次选择行时,也会存储该行。我只想在第二次选择后显示msg,即他正在更改行。在这种情况下,msg甚至在他第一次选择时出现。从selectedRow=-1开始。在您的didSelectRowAtIndexPath中,检查selectedRow是否大于或等于零,则您知道存在以前的选择。kk。。。我将尝试先用-1初始化它。