Я хочу создать одну таблицу программно и изменить ее в зависимости от изменения ориентации. проблема в том, что при запуске приложения таблица всегда отображается в одном и том же месте независимо от ее ориентации.
и я не понимаю, почему метод updateViewOnRotate вызывается 3 раза в первый раз.
код все в одном классе, UIViewController.
- (void)viewDidLoad {
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(updateViewOnRotate:)
name:UIDeviceOrientationDidChangeNotification
object:nil];
[super viewDidLoad];
}
-(void) updateViewOnRotate:(NSNotification *)notification {
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
if ((orientation == UIDeviceOrientationLandscapeLeft || orientation == UIDeviceOrientationLandscapeRight)) {
// present the other viewController, it's only viewable in landscape
[[self.view subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
// get rid of the landscape controller
UIView *opcionesView = [[[UIView alloc] initWithFrame:CGRectMake(100, 100, 250, self.view.frame.size.height)] autorelease];
opcionesView.backgroundColor = UIColor.redColor;
UITableView *table = [[[UITableView alloc] initWithFrame:CGRectMake(0, 50, 250, 500) style:UITableViewStylePlain] autorelease];
[opcionesView addSubview:table];
[self.view addSubview:opcionesView];
[self dismissModalViewControllerAnimated:YES];
}
else{
[[self.view subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
UIView *opcionesView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 250, self.view.frame.size.height)] autorelease];
opcionesView.backgroundColor = UIColor.redColor;
UITableView *table = [[[UITableView alloc] initWithFrame:CGRectMake(0, 50, 250, 500) style:UITableViewStylePlain] autorelease];
[opcionesView addSubview:table];
// UINavigationBar *b=[[[UINavigationBar alloc]initWithFrame:CGRectMake(0, 0, 250, 50)]autorelease];
// [opcionesView addSubview:b];
[self.view addSubview:opcionesView];
}
}