CustomViewController贯穿整个应用程序

时间:2012-04-24 18:21:36

标签: iphone objective-c ios

我想显示一个自定义栏,它出现在我的应用程序的每个屏幕上,并带有可用的按钮。我在init方法中将CustomViewController添加到我的类中,一切正常,除非我分析我的应用程序时发生潜在的内存泄漏。

当我发布[customViewController release]时,CustomViewController上的按钮将不再起作用。在没有内存泄漏的情况下实现此解决方案的正确方法是什么。

#import "CustomViewController.h"

@implementation CustomViewController

- (IBAction)doSomething:(id)sender
{
    // Perform an action
}

@end

我创建CustomViewController的ViewController:

- (id)initWithNibName:(NSString *)nibNameOrNil 
               bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        CustomViewController *customViewController = [[CustomViewController alloc] initWithNibName:@"CustomViewController" bundle:nil];
        UIView *bar = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 30)];
        [bar addSubview:customViewController.view];
        [self.view addSubview:bar];
        [bar release];
    }
}

3 个答案:

答案 0 :(得分:0)

您似乎正在以错误的方式实施此操作。您实际需要做的是创建CustomViewController并将工具栏添加到该视图。然后,应用程序中的每个其他视图控制器都应成为CustomViewController的子类。

如果自定义导航栏是您使用此超类的唯一选择,我建议您直接在您的应用正在使用的UINavigationController上设置样式。

答案 1 :(得分:0)

正确的解决方案是创建容器视图,并将我的自定义任务栏放在该视图中。

答案 2 :(得分:-1)

你说你的酒吧有按钮吗?是否在发布时释放这些按钮?检查它的viewDidLoad函数。