2010-02-23 1 views
3

У меня возникла проблема. Я не могу понять, почему это происходит, возможно, вы, ребята, можете.UIBarButton игнорирует «setEnabled: YES»

Я создал UIBarButtonItem в IB и правильно связал его. Задал свойство и синтезировал его. В начале я установил btn disabled (viewWillAppear). Тогда я пытаюсь добавить запись в моей БД MySQL:

NSString *URLStr = [NSString stringWithFormat:@"http://www.justfortestingandsoon.com/example.php?entry=%@", myEntry]; 
URLStr = [URLStr stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]; 
NSLog(@"URLStr: %@",URLStr); 
NSURL *addURL = [NSURL URLWithString:URLStr]; 
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:addURL cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:30.0]; 
      urlConnectionSet = [NSURLConnection connectionWithRequest:urlRequest delegate:self]; 

В это «didReceiveData ...» Я проверить, какое значение получает возвращается:

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { 
    NSData *myData; 
    myData = data; 
    NSString *testString = [[NSString alloc] initWithData:myData encoding:NSASCIIStringEncoding]; 
    NSLog(@"receivedData: %@", testString); 
if ([testString isEqualToString:@"ENABLED"]) { 
     self.notificationBtnDeactivate.enabled = YES; 
    } 
... 

Я уже отлажена его. Строка self.notificationBtnDeactivate.enabled = YES; вызывается, но без каких-либо заметных изменений в пользовательском интерфейсе.

Любые идеи?

Большое спасибо!

+0

Я видел «странное» поведение с помощью метода viewWillAppear. Попробуйте viewDidLoad или viewDidAppear и посмотрите, не имеет ли это никакого значения для вас. Если это так, это может указывать на некоторое неожиданное поведение в viewWillAppear. Просто и идея. –

+0

Спасибо за помощь. Но если я оставлю метод viewWillAppear, метод «didReceiveData» не активирует кнопку. :( – rdesign

ответ

1

У меня есть две идеи для этого:

  1. кнопки не правильно ссылаться из IB, добавить NSAssert и проверить на ноль
  2. вы делаете изменения пользовательского интерфейса на неправильном потоке. Попробуйте использовать performSelectorOnMainThread:withObject:waitUntilDone: