2013-12-17 116 views
0

我有UITableView,其中如果任何行被选中,我正在存储一些值。如果任何其他行被选中,我正在显示一个alertView,并警告他之前的选择将会消失。这个alerView有2个按钮YES和NO。如果选择YES,请继续选择新的行。但是,如果没有被选中,我想重新选择前一行。如果提问,我可以发布代码。但似乎更多的是逻辑问题而不是面向代码。最后选择行在UITableView

谢谢。

+3

那么你的问题是什么? – CarlJ

+0

我如何获得最后选择的行? – LeXeR

回答

1

第一家门店点击的tableview指数在UITableView Delegate像下面的全局变量,

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    if (tableView==yourTableview) { 
     yourMemberVariable=[indexPath row]; 
    } 
} 

然后检查yourMemberVariable in 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]; 
     } 
    } 
} 
+0

kk ...生病尝试用-1初始化它。它的工作原理是 – LeXeR

+0

。 Thanx @Ulaga – LeXeR

0

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

+0

任何内置方法? – LeXeR

+1

AFAIK uitableview不保存历史记录,所以没有内置的方法。你可以在uitableview的基础上编写自己的类并保存历史记录,但我认为这很难。 – Dmitriy

0

跟踪上次选择的项目。在表格的选择委托上,存储在通过班级访问的变量中选择的内容。

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]; 
+0

即使用户第一次选择一行,该行也会被存储。我想在第二次选择后才显示味精,他正在改变这一行。在这个消息中,即使是他第一次选择。 – LeXeR

+1

从selectedRow = -1开始。在你didSelectRowAtIndexPath检查如果selectedRow大于或等于零,那么你知道以前的选择存在。 – malbrigt