UITabbarController无法正确绘制视图

时间:2010-07-02 13:45:04

标签: iphone cocoa-touch uitabbarcontroller

我有一个uitabbarcontroller,它添加了一个UIViewController。 (我尽可能减少到最小的情况)。这个viewcontroller调用一个UIView,它通过:

绘制一个UIButton
- (void)drawRect:(CGRect)rect 
{
    CGRect brect = CGRectMake(0, 330, 60, 27);
    CGPoint centern=CGPointMake(CGRectGetMidX(brect), CGRectGetMidY(brect) );
    UIButton * button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [button setFrame:brect];
    [button setCenter:centern];
    [button setTitle:@"New" forState:UIControlStateNormal];
    [self addSubview:button];
 }

在没有内部文本的情况下绘制按钮。只有当我触摸显示屏时才会正确绘制。

我的解决方案如下:给标签栏控制器两个UIViewControllers进行控制。然后强制抽取第二个,然后回到第一个:

tabBarController.selectedViewController = [tabBarController.viewControllers objectAtIndex:1];
tabBarController.selectedViewController = [tabBarController.viewControllers objectAtIndex:0];

这个解决方案有效,但这是一个愚蠢的黑客攻击。有更好的方法吗?

1 个答案:

答案 0 :(得分:-1)

您发布的代码似乎不适合drawRect:implementation。您应该将此代码添加到视图init实现,或添加到viewControllers loadView或viewDidLoad实现。

这两行没有做任何有用的事情你可以把它们排除在外:

CGPoint centern=CGPointMake(CGRectGetMidX(brect), CGRectGetMidY(brect) );
[button setCenter:centern];

无论何时在视图上设置框架,视图中心都会隐式设置为框架中点(中心)。