uibutton不会禁用?

时间:2012-05-29 22:34:02

标签: iphone objective-c xcode uiscrollview uibutton

我以编程方式创建了一个UIButton并将其添加到UIScrollView的子视图中。稍后在代码的不同部分,我需要禁用该按钮。但是,当我尝试返回按钮时,它将不会禁用。

下面是一些代码:

标题

UIButton *button1;

主:

 button1 = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
 [button1 addTarget:self action:@selector(buttonStuff) forControlEvents:UIControlEventTouchUpInside];
 [scrollView addSubview:button1];

当我尝试禁用button1时:

        NSLog(@"Hidden state: %i", button1.hidden);  //------> returns "0" 
        button1.enabled = NO;
        button1.hidden = YES;
        NSLog(@"Hidden state: %i", button1.hidden);  //------> returns "1", yet is not hidden on screen

有趣的是,在最后一段代码中,在隐藏按钮之前,我的NSLog返回0(未隐藏)。然后,当我尝试隐藏它时,NSLog返回1,表示该按钮已被隐藏 - 但它仍然在屏幕上完全可见,也未被禁用。我很迷茫。有人可以帮我解决我做错的事吗?

2 个答案:

答案 0 :(得分:0)

按钮隐藏代码是否被称为后台线程? UIKit不是线程安全的;在主线程以外的线程上修改UIKit对象的属性可能导致无法看到对可视属性的更新,或者在看到更改之前可能会有很长的延迟。

您可以确保通过-performSelectorOnMainThread:withObject:waitUntilDone:在主线程上运行方法。

答案 1 :(得分:0)

您正在滥用方法tableView:numberOfRowsInSection:。相反,您应该创建自己的方法并从那里调用[self.tableView reloadData];