UITableView中最后选择的行

时间:2013-12-17 11:26:18

标签: ios objective-c uitableview

我有UITableView,如果选择了任何行,我会存储一些值。如果选择了任何其他行,我将显示一个alertView,警告他之前的选择将会消失。这个alerView有2个按钮YES和NO。如果选择是,则继续选择新行即可。但如果没有被选中,我想重新选择前一行。如果被问到,我可以发布代码。但它似乎比面向代码更具逻辑性。

谢谢。

4 个答案:

答案 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];