无法以编程方式隐藏使用IB创建的UIButton

Dav*_*idD 15 iphone objective-c interface-builder ios

我的iOS UIButton在我的视图控制器中从IB正确链接到IBOutlet,因为我可以从我的代码中更改其标题.即:

[self.myButton setTitle:@"new title" forState:UIControlStateNormal]; //works
Run Code Online (Sandbox Code Playgroud)

然而,

[self.myButton setHidden:YES]; //doesn't work
//or
self.myButton.hidden = YES; //doesn't work
Run Code Online (Sandbox Code Playgroud)

这是怎么回事?怎么能让myButton消失?

更新:一些额外的信息

这是与我的UIButton相关的代码:

在我的.h文件中

IBOutlet UIButton *myButton;
-(IBAction)pushedMyButton:(id)sender;
@property (nonatomic,retain) UIButton *myButton;
Run Code Online (Sandbox Code Playgroud)

在我的.m文件中

@synthesize myButton;
- (void)pushedMyButton:(id)sender{
    self.myButton.hidden = YES;
}
- (void)dealloc{
    [self.myButton release];
}
Run Code Online (Sandbox Code Playgroud)

Dav*_*idD 20

好的,我找到了一个有效的解决方法,但我仍然不知道为什么我的原始代码不起作用.我使用Grand Central Dispatch在主队列上调度包含隐藏调用的块,如下所示:

dispatch_async(dispatch_get_main_queue(), ^{
    self.myButton.hidden = YES; //works
});
Run Code Online (Sandbox Code Playgroud)

有趣.我的IBOutlet中的初始代码都没有包含在GCD块中.有任何想法吗?


Vde*_*edT 5

这应该工作,尝试重命名并隐藏它只是为了检查彼此顶部没有两个按钮.