didSelectRowAtIndexPath阻止推送视图控制器的方向方法

时间:2014-05-02 05:46:09

标签: ios iphone uitableview uinavigationcontroller didselectrowatindexpath

更正后@PushpakNarasimhan我使用UINavigationController的子类来支持我的应用程序中的方向,下面给出了navigationController子类的代码

- (BOOL)shouldAutorotate
{
return self.topViewController.shouldAutorotate;
}
- (NSUInteger)supportedInterfaceOrientations
{
NSLog(@"top vc = %@",self.topViewController);
return self.topViewController.supportedInterfaceOrientations;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return [self.topViewController preferredInterfaceOrientationForPresentation];
}

使用此代码,我从ViewController A导航到ViewController B,从ViewController B导航到ViewController C,当我到达ViewController C时,我需要导航到{ {1}}但是当我在导航堆栈中推送ViewController D时,我发现ViewController D中没有调用方向方法,但是其他ViewController D的情况并非如此。

给出的是我所有ViewControllers中包含view controllers

的代码
viewController D

这是我在所有视图控制器中使用的代码,但奇怪的是当它到达视图控制器D时没有调用方向方法,我也检查了导航视图控制器数组,在那里我发现了视图控制器D正在添加到导航堆栈中,但是方向代码没有被执行。

还有一件事我注意到在视图控制器D中我在导航子类中使用的NSLog没有被执行,而在所有其他导航控制器中它被执行。

请帮我解决这里可能存在的问题 谢谢

编辑1:我发现当我尝试从- (BOOL) shouldAutorotate { return NO; } -(NSUInteger)supportedInterfaceOrientations { NSLog(@"Finally method is called"); if ([[[PlistHandler sharedInstance] readvalueforKey:DEVICE_ORIENTATION fromPlistwithName:kSettings] isEqualToString:DEVICE_ORIENTATION_LANDSCAPE] || [[[PlistHandler sharedInstance] readvalueforKey:DEVICE_ORIENTATION fromPlistwithName:kSettings] isEqualToString:BLANK_STRING]) { return UIInterfaceOrientationMaskLandscape; } else { return UIInterfaceOrientationMaskPortrait; } return UIInterfaceOrientationMaskPortrait; } 推送ViewController D时,定向方法会被调用,但是当我从{{1}开始调用时当我按ViewController B时,它有一个表视图和ViewController C方法,那么在这种情况下,它的方向方法不会被执行,非常奇怪。

0 个答案:

没有答案