我以编程方式创建了一个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,表示该按钮已被隐藏 - 但它仍然在屏幕上完全可见,也未被禁用。我很迷茫。有人可以帮我解决我做错的事吗?
答案 0 :(得分:0)
按钮隐藏代码是否被称为后台线程? UIKit不是线程安全的;在主线程以外的线程上修改UIKit对象的属性可能导致无法看到对可视属性的更新,或者在看到更改之前可能会有很长的延迟。
您可以确保通过-performSelectorOnMainThread:withObject:waitUntilDone:
在主线程上运行方法。
答案 1 :(得分:0)
您正在滥用方法tableView:numberOfRowsInSection:
。相反,您应该创建自己的方法并从那里调用[self.tableView reloadData];
。