Доступ к UIButton из другого класса не работает? - PullRequest
0 голосов
/ 21 ноября 2011

Я пытаюсь получить доступ к своей UIButton в моем классе Play из моего CCLayerClass.

Проблема в том, что он не работает!

Вот как я объявляю его в классе Play:.h

IBOutlet UIButton *pauseButton;
@property(nonatomic, retain) IBOutlet UIButton *pauseButton;

.m

@synthesize pauseButton;

Затем в dealloc:

[pauseButton release];

Также, конечно, я подключаю его затем в Интерфейсном конструкторе.

Тогда в моем другом классе (My CCLayer).Я пытаюсь сделать это:

Play *play = [[[Play alloc] init] autorelease];
[play.pauseButton setHidden:YES];

Дело в том, что он просто просто не скрывает кнопку.Есть ли какая-либо причина для этого?

Спасибо!

Edit1 : My Play.h

IBOutlet UIButton *pauseButton;
BOOL pauseButtonVisible;

@property(nonatomic, retain) IBOutlet UIButton *pauseButton;
@property(readwrite) BOOL pauseButtonVisible;

.m

@synthesize pauseButton;

- (void)setPauseButtonVisible: (BOOL) variableToSet {
    pauseButtonVisible = variableToSet;
    if(pauseButton)
        [pauseButton setHidden: !pauseButtonVisible];
}
- (BOOL) pauseButtonVisible
{
    return(pauseButtonVisible);
}

viewWillAppear:

[pauseButton setHidden: !pauseButtonVisible];

Я также сделал уверен, что подключил его в Интерфейсном Разработчике

Затем в CCLayerClass я делаю это:

Play *play = [[[Play alloc] init] autorelease];
    if(play.pauseButton == NULL) {  
        NSLog( @"pause button is NULL");
    }

Но этот NSLog вызывается!Почему моя кнопка pause NULL?Мне просто нужно выделить его, чтобы он оставался в живых, это возможно?

Спасибо!play.pauseButtonVisible = YES;

1 Ответ

1 голос
/ 21 ноября 2011

Хорошо. Надеюсь, третий раз - это талисман (и после этого я сдаюсь, потому что мне пора идти спать).

Здесь, в файле .h, я сохраняю новое свойство pauseButtonVisible BOOL.

@interface Play : UIViewController
{
    BOOL pauseButtonVisible;
    IBOutlet UIButton *pauseButton;
}

@property(nonatomic, retain) IBOutlet UIButton *pauseButton;
@property(readwrite) BOOL pauseButtonVisible;

@end    

Но в файле .m мы делаем что-то немного другое:

@interface Play

// here we are rolling our own setters and getters
// instead of @synthesizing...
- (void)setPauseButtonVisible: (BOOL) variableToSet
{
    pauseButtonVisible = variableToSet;
    if(pauseButton)
        [pauseButton setHidden: !pauseButtonVisible];
}

- (BOOL) pauseButtonVisible
{
    return(pauseButtonVisible);
}

- (void) viewWillAppear: (BOOL) animated
{
    [pauseButton setHidden: !pauseButtonVisible];
    [super viewWillAppear: animated];
}

и

Play *play = [[[Play alloc] init] autorelease]; // you should really be using initWithNibName, but anyways
play.pauseButtonVisible = YES;

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...