我试图在NSThread
中做一些东西后,更改UIBarButtonItem
的启用属性。按下按钮后,我将启用设置为否,然后执行螺纹部分,最后我尝试重新启用按钮。相当基本。iPhone UIBarButtonItem setEnabled in NSThread
不知何故这失败,但我可以正确地更改UIBarButtonItem的任何其他属性(例如标题)。
我在这里做错了什么?
@interface myViewController : UIViewController <UITableViewDataSource, UITableViewDelegate> {
IBOutlet UIBarButtonItem *myButton;
}
@property (nonatomic, retain) IBOutlet UIBarButtonItem *myButton;
- (IBAction)mysub:(id)sender;
@end
@implementation myViewController
@synthesize myButton;
- (IBAction)mysub:(id)sender {
[myButton setEnabled:NO];
[NSThread detachNewThreadSelector:@selector(mysub_threaded) toTarget:self withObject:nil];
}
- (void) mysub_threaded {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
… do threaded stuff
[myButton performSelectorInBackground: @ selector(setEnabled :) withObject: [NSNumber numberWithBool:YES]];
[pool drain];
}
setEnabled:需要一个BOOL,而不是NSNumber *。 – 2010-08-06 17:47:52
tc。那么,将BOOL参数传递给performSelectorOnMainThread而不是使用NSNumber的正确方法是什么? – Tomas 2010-08-06 19:46:45