2013-12-17 3 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 в 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 ... плохо попытайтесь инициализировать его первым. – 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 делегатом

[myTableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:selectedRow inSection:0] animated:NO scrollPosition:UITableViewScrollPositionTop]; 
+0

строка сохраняется даже в первый раз, когда пользователь выбирает строку. Я хочу отображать msg только после второго выбора, что он меняет строку. В этом msg приходит даже в первый раз, когда он выбирает. – LeXeR

+1

Начните с выбранногоRow = -1. У вас didSelectRowAtIndexPath проверьте, если selectedRow больше или равен нулю, тогда вы знаете, что существует предыдущий выбор. – malbrigt

Смежные вопросы