if语句后的方向

时间:2010-12-01 10:09:46

标签: iphone ios

我有这个代码调用这个方法(你不注释要使用的方法)

// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations

NSLog(@"So the orientation is %d", OrientationInteger); 


//1 is button to the left, 0 to the right.

if (OrientationInteger == 1) {
    return UIInterfaceOrientationLandscapeLeft;
    NSLog(@"setting Orientation landscape left");

}


if (OrientationInteger == 0) {
    return  UIInterfaceOrientationLandscapeRight;
    NSLog(@"setting Orientation landscape right");


}


else {
    return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
    NSLog(@"no instructions regarding orientation.");


}

}

但是,方向不会改变,第一次触发后的日志消息也不会改变。

    NSLog(@"So the orientation is %d", OrientationInteger); 

有时给出'因此方向为1'或'因此方向为2'。 任何想法?

2 个答案:

答案 0 :(得分:1)

您的问题是,您要返回intUIInterfaceOrientation)而不是BOOL。 这个方法基本上是系统询问你的视图控制器是否有旋转权限。您需要返回YES表示您支持的方向,并NO表示您不想支持的方向。

类似

if (interfaceOrientation == UIInterfaceOrientationLandscapeRight) {
    NSLog(@"landscape right allowed");
    return YES;
} else {
    NSLog(@"denied rotation to %i", interfaceOrientation);
    return NO;
}

正如其他人所指出的那样,return语句退出你的方法,将返回值传递给调用它的方法。返回命中后,不再运行方法中的代码。

答案 1 :(得分:0)

只要运行return语句,该方法就会退出。因此,return语句之后的日志消息将永远不会显示。

我不知道为什么实际的功能不起作用;它可能是代码中其他地方的问题。