Проблема с использованием if в IBAction - PullRequest
1 голос
/ 10 января 2011

Извинения, если это полный вопрос новичка, я просмотрел онлайн и не смог найти простой ответ.

Я пытаюсь сделать так, чтобы кнопка панели навигации исчезла, если поле ("googlemap") не заполнено в моем приложении для iPhone.Думая, что это будет просто оператор if, я использовал следующий код, в результате которого кнопка теряет все свои функции (она вызывает другое представление) и не исчезает.

-(IBAction)btnMapM
{
 if (googlemap != nil)
 {

 LocationInfo *ObjLocInfo = [self.LocationInfoArr objectAtIndex:0];
 LocationMap *ObjLocationMap = [[LocationMap alloc] initWithNibName:@"LocationMap" bundle:nil];
 ObjLocationMap.address =  ObjLocInfo->address;
 ObjLocationMap.latitude = ObjLocInfo->latitude;
 ObjLocationMap.longtitude = ObjLocInfo->longtitude;



 [self.navigationController pushViewController:ObjLocationMap animated:YES];
 [ObjLocationMap release];

}
}

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

Спасибо,

Nic

Ответы [ 3 ]

2 голосов
/ 10 января 2011

Я отвечу на это, предполагая, что, если определенное свойство установлено на nil, вы хотите, чтобы ваша кнопка исчезла.(Проверьте мой ответ здесь для лучшего способа проверить, является ли свойство пустым.)

Сначала убедитесь, что вы объявили выход для кнопки, используя

IBOutlet UIButton *button;

в заголовочном файле, и все правильно подключил в конструкторе интерфейсов.Это включает в себя подключение вашей кнопки к розетке button и событие touchUpInside к вашей IBAction.Затем используйте это для вашего viewDidLoad метода:

-(void) viewDidLoad {
    [super viewDidLoad];
    if (googlemap == nil) {
        [button setHidden:YES];
        [button setEnabled:NO];
    }
}

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

Можно пойти дальше и удалить оператор if из IBAction, поскольку этот метод вызывается только тогда, когда пользователь нажимает кнопку.Если кнопка скрыта, то метод никогда не вызывается.

1 голос
/ 10 января 2011

Попробуйте

-(IBAction)btnMapM: (id)sender
{
  ...

, а также ответ @ Сэма Ричи.

0 голосов
/ 11 января 2011

Спасибо всем, кто помогал ответить на этот вопрос - оказалось, что моя кнопка панели навигации была объявлена ​​отдельно в viewDidLoad (btnMapm был методом действия, а не реальной кнопкой, которая потребовала меня некоторое время, чтобы понять), поэтому я просто отредактировал оператор Сэма if в viewDidLoad, чтобы скрыть его следующим образом:

    if (googlemap != nil) {

        BlueButton *blueSaveButton = [[BlueButton alloc] init];
        [blueSaveButton setTitle:@"Map" forState:UIControlStateNormal];
        [blueSaveButton addTarget:self action:@selector(btnMapM) forControlEvents:UIControlEventTouchUpInside];
        UIBarButtonItem *button = [[UIBarButtonItem alloc]  initWithCustomView:blueSaveButton];
        self.navigationItem.rightBarButtonItem = button;
        [button release];
        [blueSaveButton release];
    }

И на то, чтобы понять это, у меня ушло около трех часов. Быть новичком - отстой ... Но, возможно, это поможет кому-то еще!

Спасибо

Ник

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