0

我正在使用控制器来替换传统的UITabBarController.

我正在使用的是AKTabBarController。现在一切正常,但有一个阶段我想使用手势将其删除。

手势是正确的,因为我正在移除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。此代码不提供任何警告或错误,但在应用程序运行时不知何故不起作用。

我不确定是否需要做其他事情,因为它是一个自定义控件。此外,此控件是 UIViewController 而非 UITabBarController 的子类。

它通过应用程序委托中的这一行添加到项目中:[_window setRootViewController:_tabBarController];

如果我需要提供更多详细信息,请告诉我,但我在这里有点迷失了。

4

2 回答 2

0

您正在以错误的方式创建 AppDelegate 的实例,请将其替换为以下内容:-

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

希望它会帮助你。

于 2013-05-05T05:29:54.650 回答
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 回答