, если я, как этоткакая разница между self.view.widow и [[UIApplication sharedApplication] keyWindow] в Objective-C
- (void)viewDidLoad {
[super viewDidLoad];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"test" delegate:self cancelButtonTitle:@"ok" otherButtonTitles:nil];
[alert show];
}
// Called when a button is clicked. The red view and alert will be automatically dismissed after this call returns
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
[self showView];
}
// after animation ,this will work fine
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
// [self showView];
}
- (void)showView {
// Called when a button is clicked. The view will be automatically dismissed after this call returns
UIView *view = [[UIView alloc] init];
view.frame = CGRectMake(0, 0, 200, 200);
view.backgroundColor = [UIColor redColor];
view.center = CGPointMake([UIScreen mainScreen].bounds.size.width/2.0f, [UIScreen mainScreen].bounds.size.height/2.0f);
// [self.view.window addSubview:view]; //when i use this ,both of the two delegate methods works fine
UIWindow *window = [[UIApplication sharedApplication] keyWindow];
[window addSubview:view];
}
Тогда красный вид и предупреждение будет автоматически освобождаемый после alertView:clickedButtonAtIndex:
возвращения вызова
, который может показать мне причину?
чем разница между self.view.widow и [[UIApplication sharedApplication] keyWindow] в Objective-C
Последний абзац не совсем прав. 'self.view.window' - это любое окно, в которое было добавлено представление. Это может быть главное окно приложения. Это может быть вторичное окно, созданное и используемое приложением. Это может быть системное окно. Скорее всего, это главное окно приложения, но это необязательно. – rmaddy
OP должен уточнить, но я предположил, что использование self.view в этом конкретном примере означает, что представление было представлением контроллера вида, которое было автоматически добавлено в окно приложения. Я уточнил свой ответ. – Jose