Не могу получить доступ к значению int - PullRequest
0 голосов
/ 30 июня 2011

я объявил значение int как my imageIndexForSend с помощью следующего кода в myView class.

int imageIndexForSend; 
@property int imageIndexForSend;
@synthesize imageIndexForSend;

после нажатия кнопки я показываю поповер, который является PopOver calss. в классе popover есть табличное представление с несколькими индексами. Когда я щелкаю по любой строке в таблице класса PopOver, для класса myView imageIndexForSend устанавливается

In PopOver

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 
    myView *obj = [[myView alloc] init];
    [obj getImageForSend:indexPath.row];
    [staticSceneController release];
}

в myViewClass

-(void)getImageForSend:(int)index{
    imageIndexForSend = index;
}

затем я возвращаюсь в myViewClass после закрытия popover (класс popOver) и выполнения некоторых действий в myViewClass.

затем я нажимаю кнопку отправки. Но целочисленное значение imageIndexForSend равно нулю. Не могу получить старое значение, которое я установил из PopUp.

Может кто-нибудь сказать мне способ получить старое значение imageIndexForSend. Могу ли я знать, какую ошибку я совершил.

Ответы [ 4 ]

1 голос
/ 30 июня 2011

Во-первых, вы называете метод с помощью get для установки значения, это плохо.

Во-вторых, вы используете свойство и синтезируете его, поэтому вам не нужно переписывать метод set, если вам не нужноесть собственный метод установки.

И, наконец, вы создаете новое представление для каждого выбора ячейки табличного представления!

1) Удалите ваш метод getImageForSend: вам это не нужно со свойством

2) Вместо этого используйте: [obj getImageForSend: indexPath.row] ;, используйте: obj.imageIndexForSend = indexPath.row;

3) Не создавайте новое представление для каждого выбора, назначьтезначение в существующем представлении.

Лучший способ передать данные из вашего popover в ваше представление (контроллер?) - это иметь свойство делегата в вашем классе popover и установить его с вашим объектом представления, создать протокол делегата.с помощью метода, который вызывается, когда в popover выбирается ячейка с аргументом int (индексом), затем заставьте ваш класс представления принять протокол и выполнить obj.imageIndexForSend = аргумент ;в вашем методе протокола.

1 голос
/ 30 июня 2011

Кажется, вы выделяете экземпляр myView и присваиваете его локальной переменной (obj), но тогда вы нигде не сохраняете указатель на этот новый экземпляр.

Насколько я понимаю, у вас уже есть существующий экземпляр myView, поэтому вам нужно установить переменную для этого экземпляра, а не создавать новую каждый раз.

Каждый экземпляр имеет свой собственный набор переменных, поэтому изменение его в новом экземпляре не повлияет на другие экземпляры.

1 голос
/ 30 июня 2011

Вы создаете новый MyView каждый раз, когда пользователь нажимает на любой ряд вашего UITableView.Вместо этого вы должны попытаться получить доступ к исходному MyView (или любой объект должен сохранить это значение настройки).

В вашем поповере вы должны найти способ доступа к экземпляру, который содержит фактическое значение индекса.То, как именно это будет достигнуто, во многом зависит от вашей реализации.

Другими словами, не создавайте экземпляры чего-либо внутри объекта с более коротким временем жизни, чем у объекта, который будет обращаться к этому самому экземпляру.

0 голосов
/ 30 июня 2011

Если вы пытаетесь получить доступ к индексу выбранной строки в UITableView, вы можете просто использовать следующее:

int index = [myTableView indexPathForSelectedRow].row;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...