我有一个 iPad 3 应用程序,我只想在横向模式下查看。我有几个 UIViewContoller 子类(它是一个非常简单的应用程序),并且在所有这些子类中我都有以下代码:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight;
}
代码不大,但重复,我想学习如何在 Objective-C 中避免这种情况。我阅读了有关类别的内容,以及它们如何覆盖它们应用的类/实例中的方法,因此决定尝试。我使用 Xcode 向导为 UIViewController 类创建了 LandscapeOnly 类别,并将上面的实现移到其中 - 无济于事。我尝试将方法签名添加到头文件中,但这也没有改变任何东西。
这是怎么做到的?如何使用类别来覆盖实例方法?
我在这里读到另一个问题,不鼓励使用类别和覆盖方法,所以也许我一直都错了?实现我想要实现的目标的规范方式是什么?我可以使用自定义 UIViewController 子类,并让所有其他控制器派生自它,但是一旦我拥有具有不同要求的控制器并因此具有多个基类,这就会中断。例如,在其他语言中,我会使用 mixins,我认为 Objective-c 类别是它们的对应物吗?