0

従来の の代わりにコントローラーを使用していUITabBarControllerます。

私が使用しているのはAKTabBarControllerです。現在、すべてが機能していますが、ジェスチャーを使用して削除したい段階が 1 つあります。

UINavigationBarうまく削除しているので、ジェスチャーは正しいです。私が指摘できる唯一の違いは、UINavigationControllerが関連する 内で開始されUIViewController、TabBar が で初期化されることAppDelegateです。

だから問題はここにあると思います:

ViewController から TabBarController のフレームを操作できないようです。

-(void)goFull
{
    JWKAppDelegate *appdel = [[JWKAppDelegate alloc] init];

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.3];

    self.webView.frame = CGRectMake(0, 0, 320, 411); // (00,00 : -20, -94)
    _navBar.frame = CGRectMake(0, 0, 320, 0);
    appdel.tabBarController.view.frame = CGRectMake(0, 0, 320, 0);

    NSLog(@"My view frame: %@", NSStringFromCGRect(appdel.tabBarController.view.frame));

    [UIView commitAnimations];
}

コードでわかるように、メソッドで App Delegate を初期化し、tabBarController にアクセスしようとしています。このコードは警告やエラーを提供しませんが、アプリの実行中に何らかの理由で機能しません。

カスタム コントロールであるため、他に何かする必要があるかどうかはわかりません。また、このコントロールは、UITabBarController ではなく UIViewController からサブクラス化されています。

これは、アプリ デリゲートの次の行でプロジェクトに追加されます。[_window setRootViewController:_tabBarController];

詳細を提供する必要がある場合はお知らせください。ただし、ここで少し迷っています。

4

2 に答える 2

0
-(void)goFull
{

 JWKAppDelegate *appdel = (JWKAppDelegate  *)[[UIApplication sharedApplication] delegate];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];

self.webView.frame = CGRectMake(0, 0, 320, 411); // (00,00 : -20, -94)
_navBar.frame = CGRectMake(0, 0, 320, 0);
appdel.tabBarController.view.frame = CGRectMake(0, 0, 320, 0);

NSLog(@"My view frame: %@", NSStringFromCGRect(appdel.tabBarController.view.frame));

[UIView commitAnimations];
}

これを試してみてください。

于 2013-05-05T06:01:51.233 に答える
0

AppDelegate のインスタンスを間違った方法で作成しています。次のように置き換えてください:-

JWKAppDelegate *appdel = (JWKAppDelegate  *)[[UIApplication sharedApplication] delegate];

それがあなたを助けることを願っています。

于 2013-05-05T05:29:54.650 に答える