0

私のアプリには、5 つのタブを持つ UITabBarController があります。5 番目のタブの向きだけを回転させる必要がありました。UITabBarController をサブクラス化することで、5 つすべてを横向きに回転させることができました。

@implementation TabBarControllerRotate

-(BOOL)shouldAutorotateToInterfaceOrientation:
    (UIInterfaceOrientation)interfaceOrientation {

//return (interfaceOrientation == UIInterfaceOrientationPortrait);
return (interfaceOrientation == UIInterfaceOrientationLandscapeRight 
          || interfaceOrientation == UIInterfaceOrientationLandscapeLeft
          || interfaceOrientation == UIInterfaceOrientationPortrait);
}

@終わり

if(tbc == nil){
    //tbc = [[UITabBarController alloc] initWithNibName:nil bundle:nil];        
    tbc = [[TabBarControllerRotate alloc] initWithNibName:nil bundle:nil];  ////// new  //////

....

tbc.viewControllers = 
[NSArray arrayWithObjects:viewController1, viewController2, viewController3
 ,viewController4,viewController5, nil];

viewController1 - 4 の回転をオフにする必要があります。これらの viewController の 4 つの *.m ファイルに次のコードを追加して、これを実行しようとしましたが失敗しました。

- (BOOL)shouldAutorotateToInterfaceOrientation:
    (UIInterfaceOrientation)interfaceOrientation {

return NO;
}

Rを完成させる方法について教えてください。読んでくれてありがとう、マーク

4

1 に答える 1

0

これを行うには他にも簡単な方法があると思いますが、最終的に解決策を得ました。向きを変更する必要がある唯一の TabBarController の 5 番目の viewController のタイトルは、「MyNotes」です。

SubListViewController.m の内部で、TabBarControllerRotate オブジェクトが作成されます。

  tbc = [[TabBarControllerRotate alloc] initWithNibName:nil bundle:nil];
  tbc.viewControllers = [NSArray arrayWithObjects:viewController1
          、viewController2、viewController3、viewController4、viewController5、nil
  tbc.delegate = 自己;

TabBarController は UITabBarController をサブクラス化し、BOOL プロパティ名 bMyNotes を含みます。

SubListViewController は UITabBarControllerDelegate です

TabBarController でビューが変更されるたびに、メッセージが送信されます。つまり、(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController

したがって、SubListViewController.m には次のコードが含まれます。

   #pragma mark UITabBarControllerDelegate メソッド

   - (void)tabBarController:(UITabBarController *)tabBarController
        didSelectViewController:(UIViewController *)viewController{
    BOOL b = (viewController.title == @"MyNotes");
    [tbc setBMyNotesTab:b];
    //NSLog(@"MyNotesTab == %d", [tbc bMyNotesTab]);

   }

次に、TabBarControllerRotate.m には以下が含まれます。

    - (BOOL)shouldAutorotateToInterfaceOrientation:
          (UIInterfaceOrientation)interfaceOrientation {

        //NSLog(@"bMyNotesTab is: %d",self.bMyNotesTab);

        return ( (interfaceOrientation == UIInterfaceOrientationLandscapeRight 
            || interfaceOrientation == UIInterfaceOrientationLandscapeLeft
            || interfaceOrientation == UIInterfaceOrientationPortrait
                 ) && self.bMyNotesTab 
               );
}
于 2009-08-28T02:12:55.420 に答える