Фэйл в X-code при создании Ladscape приложения

Вопросы по программированию, не подходящие в другие разделы.

Модераторы: Naeel Maqsudov, C_O_D_E

Ответить
shoorickus
Сообщения: 1
Зарегистрирован: 12 июн 2010, 01:25

Такая проблема. Приложение для iPhone. Ситуацию упрощу, чтобы сразу была видна суть.
Создаю View-based приложение (назовем его Foo). Сразу скажу, что оно должно поддерживать только ландшафную (альбомную) ориентацию. Мне в приложении надо несколько View, у каждого свое содержимое (кнопки, изображения...) Вот и в FooViewController.h я пишу:

#import <UIKit/UIKit.h>

@interface FooViewController : UIViewController {
IBOutlet UIView *one;
IBOutlet UIView *two;
}

@property (nonatomic, retain) UIView *one;
@property (nonatomic, retain) UIView *two;

- (IBAction) fromOneToTwo: (id) sender; // Переключение от первой ко второй
- (IBAction) fromTwoToOne: (id) sender; // переключение от второй к первой

@end

В файле FooViewController.m соответственно:

#import "FooViewController.h"

@implementation FooViewController
@synthesize one;
@synthesize two;

- (IBAction) fromOneToTwo: (id) sender
{
self.view = two;
}


- (IBAction) fromTwoToOne: (id) sender
{
self.view = one;
}

Поскольку мне нужна только ландшафтная ориентация в этом же файле раскомментирую и исправляю уже предусмотренную функцию:

- (BOOL)shouldAutorotateToInterfaceOrientation :( UIInterfaceOrientation)interfaceOrientation {
//Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}
Все сохраняю.
Теперь открываю FooViewController.xib , запускается Interface Builder. Из Library беру View и тяну в окно FooViewController.xib . Теперь там уже два View. Выбираю первое. В свойствах View Attributes свойство Orientation делаю Landscape, задаю ему к-л цвет. Ложу на него кнопку, делаю ей Title у нее будет Button One. Все тоже делаем со вторым View (ориентация, цвет, кнопка Button Two). Потом в окне FooViewController.xib соединяю, удерживая Cntrl, File's Owner и первый View, выбираю из pop-up окна one. Аналогично со вторым View. Потом действия кнопок Touch Up Inside соединям с fromOneToTwo: и fromTwoToOne: . Сохраяем, запускаем. Как и должно было быть, девайс-симулятор расположился правильно и View видно так, как когда мы его редактировали. Жмем кнопку - упс, View переключается на другое только оно уже абы-как, то есть кнопка в другом месте и расположена она и ее надпись вертикально, то есть как бы повернулась в портретную ориетацию. Поворот девайса нам ничего не дает, также как и вызов функции [self shouldAutorotateToInterfaceOrientation:self.InterfaceOrientation] в функции fromOneToTwo , так как она по сути ничего не делает только возвращает булевское значение. Просто изменить self.InterfaceOrientation на UIInterfaceOrientationLandscapeLeft нельзя, ругается: Object cannot be set - either readonly or no setter found. Хоть плачь...
Ответить