Для ваших первых 2 ошибок:
- Либо
CalculatorViewController
не объявлено как подкласс UIViewController
в вашем .h файле - Или компилятор не знаетоб этом, потому что вы забыли
#import "CalculatorViewController.h"
в своем коде, чтобы сообщить компилятору о его определении
Для вашей последней проблемы это потому, что вы неправильно используете UIDeviceOrientation
и UIInterfaceOrientation
, которыене тот же тип (даже довольно связанный).
UIInterfaceOrientation
определяет ориентацию пользовательского интерфейса .Он имеет только 4 значения: Портрет, Пейзаж влево, Пейзаж вправо или UpsideDown. UIDeviceOrientation
определяют ориентацию устройства .Он имеет 6 значений, определяющих, что ваше устройство направлено вверх, поворачивается на 90 ° влево или вправо, вверх или вниз или вверх.
Если вы настраиваете свой интерфейс так, чтобы он работал not rotate (shouldAutorotateToInterfaceOrientation:
возвращает YES только для одного из 4 UIInterfaceOrientation
), ваш UIDeviceOrientation
все еще может измениться (ничто не мешает пользователю повернуть его / ее iPhone в любую позицию), но ваш UIInterfaceOrientation
не изменится.
Если вы настроите свой интерфейс таким образом, он будет вращаться (shouldAutorotateToInterfaceOrientation:
всегда возвращает ДА), когда пользователь поворачивает свой iPhone вправо,UIDeviceOrientation
будет UIDeviceOrientationLandscapeRight
, потому что iPhone будет повернут направо ... и UIInterfaceOrientation
будет UIInterfaceOrientationLandscapeLeft
, потому что ориентация интерфейса будет повернута на 90 ° дослева, так что, поскольку устройство повернуто вправо, интерфейс все равно будет отображаться пользователю горизонтально.
Вы можете заметить, что UIInterfaceOrientation
и UIDeviceOrientation
имеют противоположные значения (для перечислений, которые являются общими для обоих; конечно для UIDeviceOrientationFaceUp
и UIDeviceOrientationFaceDown
тамне соответствует UIInterfaceOrientation
)