проблема переменной доступности в iphone - PullRequest
0 голосов
/ 18 марта 2011

У меня есть два класса ..

, в одном из них я использую шесть кнопок с их тегом ..

вот так

[btnF1 setTag:1];

и я используюэтот тег

вот так ..

- (void)showPhoto:(UIButton*)btnSender       {    
    NSLog(@"showPhoto:%d",btnSender.tag);   
}  

Теперь я хочу создать переменную, которая хранит значение btnSender.tag, и я также могу использовать это значение в любом другом классе ...

Я сделал два подхода .. 1) Я сделал переменную в этом классе, которая хранит значение btnSender.tag, и я попытался использовать это значение в другом классе, но он дает мне ноль

2) Я опробовал глобальную переменную, но не смог увидеть значение глобальной переменной в NSLog ..

Я не использую IB

Помогите мне ...:)

Ответы [ 3 ]

1 голос
/ 18 марта 2011

Вы можете использовать NSUserDefaults или UILabel для сохранения значения тега кнопки.Но для использования UILabel вам нужно будет передать его на скрытую метку только в вашей XIB, тогда она сохранит свое значение.

NSUserDefaults хранит значение постоянно, пока вы не обновите его.Таким образом, не будет проблемы сохранения ценностей.

Поэтому лучше использовать NSUserDefaults, как показано ниже.Может быть, вы можете поставить это на событие (например, ButtonClick, если вы переходите к следующему представлению по нажатию кнопки).

NSUserDefaults *userDef = [NSUserDefaults standardUserDefaults]; 
[userDef setObject:[NSString stringWithFormat:@"%d",btnSender.tag] forKey:@"BtnTag"];

Теперь, когда вы переходите к следующему представлению, вы можете получить к нему доступ, используя следующий код:

int tagValue = [[[NSUserDefaults alloc] valueForKey:@"BtnTag"] intValue];

Надеюсь, это поможет вам.

0 голосов
/ 18 марта 2011

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

  • Это полностью решает вашу проблему с обменом тегами. Никто, кроме контроллера представления, не должен заботиться о тегах.
  • Концентрация ответственности за все в представлении делает ваш код менее ошибочным и намного более легким в обслуживании.
0 голосов
/ 18 марта 2011
@interface urViewController : UIViewController 

{
 int buttonTag;
}
@property int buttonTag;
...