в методе, я хочу, чтобы вызвать метод после п секунд:performSelector: withObject: afterDelay: не делает вызов
self.toolBarState = [NSNumber numberWithInt:1];
[self changeButtonNames];
[self drawMap];
[self performSelector:@selector(showActionSheet) withObject:nil afterDelay:2];
я хочу, чтобы показать действие лист 2 секунды после того, как drawMap завершен. когда я использую этот performSelector, он никогда не вызывает вызов.
если я просто положил [self showActionSheet] ;, он отлично работает. есть ли причина, по которой функция performSelector не выполняет вызов?
EDIT: в другой части моего кода, я сделать такой же вызов, и она работает:
HUD = [[MBProgressHUD alloc] initWithView:self.view];
[self.view addSubview:HUD];
HUD.delegate = (id) self;
[HUD showWhileExecuting:@selector(drawMap) onTarget:self withObject:nil animated:YES];
[self performSelector:@selector(showActionSheet) withObject:nil afterDelay:6];
здесь, то showActionSheet вызывается через 6 секунд после того, как drawMap завершена. Я предполагаю, есть что-то происходит с нитями, которые я до сих пор не понимаю ...
EDIT2:
-(void)showActionSheet
{
InspectAppDelegate *dataCenter = (InspectAppDelegate *) [[UIApplication sharedApplication] delegate];
if (dataCenter.fieldIDToPass == nil)
{
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Selected Boundary Options" delegate:(id) self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Analyze a Field",@"Retrieve Saved Analysi", @"Geotag Photos", @"Refresh the map",nil];
actionSheet.tag = 0;
[actionSheet showInView:self.view];
}
else
{
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Selected Boundary Options" delegate:(id) self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Analyze a Field",@"Retrieve Saved Analysi", @"Geotag Photos", @"Attribute the Field", @"Refresh the map",nil];
actionSheet.tag = 0;
[actionSheet showInView:self.view];
}
}
EDIT3:
нормально, так что прогресс вызовов метода является :
-(void) foundDoubleTap:(UITapGestureRecognizer *) recognizer
{
[HUD showWhileExecuting:@selector(select) onTarget:self withObject:nil animated:YES];
}
-(void) select
{
[self changeButtonNames];
[self drawMap];
[self performSelector:@selector(showActionSheet) withObject:nil afterDelay:2];
}
showActionSheet никогда не вызывается. как я уже сказал, я уверен, что это проблема с потоками. если вызывать его с помощью [self showActionSheet], он будет работать. =/
Можете ли вы опубликовать код метода showActionSheet? –