У меня есть 10 или около кнопки установки внутри метода следующим образом:UIButton setHidden не работает сейчас?
@implementation MyViewController
UIButton *originalButton;
etc...
- (void)setupButtons
{
originalButton = [UIButton buttonWithType:UIButtonTypeCustom];
[originalButton addTarget:self action:@selector(originalButtonWasPressed:) forControlEvents:UIControlEventTouchUpInside];
originalButton.frame = CGRectMake(20.0, 30.0, 100.0, 39.0);
UIImage *buttonImage = [[UIImage imageNamed:@"originalreg.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(18, 18, 18, 18)];
UIImage *buttonImageHighlight = [[UIImage imageNamed:@"originalregblue.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(18, 18, 18, 18)];
[originalButton setBackgroundImage:buttonImage forState:UIControlStateNormal];
[originalButton setBackgroundImage:buttonImageHighlight forState:UIControlStateHighlighted];
[self.view addSubview:originalButton];
etc…
}
я решил вытащить общий код в другой метод для повышения эффективности:
- (void)setupButton:(UIButton *)myButton withSelector:(SEL)selector withX:(CGFloat)x withY:(CGFloat)y withRegImage:(NSString *)regImage withHighlightImage:(NSString *)highlightImage
{
myButton = [UIButton buttonWithType:UIButtonTypeCustom];
[myButton addTarget:self action:selector forControlEvents:UIControlEventTouchUpInside];
myButton.frame = CGRectMake(x, y, 100.0, 39.0);
UIImage *buttonImage = [[UIImage imageNamed:regImage] resizableImageWithCapInsets:UIEdgeInsetsMake(18, 18, 18, 18)];
UIImage *buttonImageHighlight = [[UIImage imageNamed:highlightImage] resizableImageWithCapInsets:UIEdgeInsetsMake(18, 18, 18, 18)];
[myButton setBackgroundImage:buttonImage forState:UIControlStateNormal];
[myButton setBackgroundImage:buttonImageHighlight forState:UIControlStateHighlighted];
[self.view addSubview:myButton];
}
... и назвать его как таковой:
- (void)setupButtons
{
[self setupButton:originalButton withSelector:@selector(originalButtonWasPressed:) withX:20.0 withY:30.0 withRegImage:@"originalreg.png" withHighlightImage:@"originalregblue.png"];
etc...
}
эТО вСЕ РАБОТАЕТ исключения, одна из моих кнопок используются, чтобы скрыть все остальное. В исходной настройке нажатие кнопки «Скрыть кнопки» привело к тому, что остальные кнопки были скрыты. Теперь они остаются на экране. Вот код, который:
[self setupButton:hideButtonsButton withSelector:@selector(hideButtonsButtonWasPressed:) withX:20.0 withY:530.0 withRegImage:@"hidebuttonsreg.png" withHighlightImage:@"hidebuttonsregblue.png"];
- (void)hideButtonsButtonWasPressed:(id)sender
{
// hide the buttons
originalButton.hidden = YES;
originalButton.enabled = NO;
etc…
}
Я подтвердил этот метод вызывается и setHidden/setEnabled
вызовов выполняется.
Любые указатели с благодарностью получили! Тони.
Я смущен, что, поскольку я объявляю все UIButtons в верхнем (поэтому они доступны для всех моих методов). Я думал, что передача этих данных в 'setupButton: withSelector ...' приведет к отдельным экземплярам для каждого из них? Если я сделаю так, как вы говорите, я не смогу использовать экземпляр кнопки в других методах этого класса? – Tony
мой дорогой друг, тогда вам нужно передать объект этой кнопки в свой индивидуальный метод, чтобы получить экземпляр объявленной кнопки. ваш объявленный метод делает то, что я объяснил. он возвращает только один экземпляр. но вы можете назначить этот экземпляр любой объявленной вами кнопке. –
Позвольте мне изменить свой ответ на примере. –