1

我以编程方式创建了一个 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,表示该按钮已被隐藏——但它仍然在屏幕上完全可见,也没有被禁用。我很困扰。有人可以帮我解决我做错了什么吗?

4

2 回答 2

0

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

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

于 2012-05-29T22:45:32.280 回答
0

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

于 2012-05-30T06:26:39.833 回答