Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UITableView中最后选定的行_Ios_Objective C_Uitableview - Fatal编程技术网

Ios UITableView中最后选定的行

Ios UITableView中最后选定的行,ios,objective-c,uitableview,Ios,Objective C,Uitableview,我有UITableView,如果选择了任何一行,我将存储一些值。如果选择了任何其他行,我将显示一个alertView,警告他之前的选择将消失。此alerView有两个按钮YES和NO。如果选择YES,则继续选择新行,这很好。但如果选择“否”,我希望重新选择上一行。如果有人问我,我可以发布代码。但这似乎更多的是逻辑问题,而不是面向代码的问题 谢谢。很简单。只需将上一行保存到类成员中。祝你好运 跟踪最后选定的项目。在表的select委托上,将所选内容存储在可通过类访问的变量中 NSInteger s

我有UITableView,如果选择了任何一行,我将存储一些值。如果选择了任何其他行,我将显示一个alertView,警告他之前的选择将消失。此alerView有两个按钮YES和NO。如果选择YES,则继续选择新行,这很好。但如果选择“否”,我希望重新选择上一行。如果有人问我,我可以发布代码。但这似乎更多的是逻辑问题,而不是面向代码的问题


谢谢。

很简单。只需将上一行保存到类成员中。祝你好运

跟踪最后选定的项目。在表的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初始化它。