I need to be able to remove a button from a view and add a different one. My code looks like this:
-(void)UpdatePromoBanner:(NSString*)value{
[button setTitle:@"newer text" forState:UIControlStateNormal];
for (UIView *subView in emptyViewController.view.subviews)
{
if(subView.tag == 99) {
//--remove button and add an updated one
NSLog(@"Remove button?");
[subView removeFromSuperview];
//[subView.superview addSubview:button];
}
}
NSLog(@"event called");
}
-(void)AddPromoBannerToBottom:(UIView*)view {
button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self
action:@selector(aMethod:)
forControlEvents:UIControlEventTouchDown];
[button setTitle:lblForBannerButton forState:UIControlStateNormal];
button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);
button.tag = 99;
[view addSubview:button];
}
The emptyViewController is just a plain empty view controller. I'm adding a button in the middle. I hit the NSLog ok that checks the tag, but the view does not get removed. I should mention I'm using a thread thats firing the updatepromobanner every 5 secs.
You cannot update the UI using a secondary thread, whenever your thread is doing UI updates you must call the main thread.
Oscar is right. You have to update the interface on the main thread. Figured I'd add in some code to help.
Replace:
With:
And I think you should be good to go without changing anything else.
Remember update UI in main thread :)