【问题标题】:UIBarButton ignores "setEnabled:YES"UIBarButton 忽略“setEnabled:YES”
【发布时间】:2012-05-03 19:37:15
【问题描述】:

我遇到了问题。我无法想象为什么会发生这种情况,也许你们可以。

我在 IB 中创建了一个 UIBarButtonItem 并正确链接它。 A 设置属性并合成它。一开始我将 btn 设置为禁用(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;被调用,但 UI 上没有任何明显的变化。

有什么想法吗?

非常感谢!

【问题讨论】:

  • 我已经看到了 viewWillAppear 方法的“奇怪”行为。试试 viewDidLoad 或 viewDidAppear 看看这对你有没有影响。如果是这样,这可能指向 viewWillAppear 中的一些意外行为。公正和想法。
  • 感谢您的帮助。但是,如果我将 viewWillAppear 方法排除在外,则“didReceiveData”方法也不会启用该按钮。 :(

标签: iphone nsurlconnection uibarbuttonitem


【解决方案1】:

对此我有两个想法:

  1. 按钮未正确从 IB 引用,添加一些 NSAssert 并检查 nil
  2. 您在错误的线程上进行 UI 更改。尝试使用performSelectorOnMainThread:withObject:waitUntilDone:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多