0

我想在我的应用程序的每个屏幕上显示一个自定义栏,并带有可用的按钮。我在 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];
    }
}
4

3 回答 3

0

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

于 2013-01-19T02:33:26.950 回答
0

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

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

于 2012-04-24T18:54:51.680 回答
-1

你说你的酒吧有按钮?当它本身被释放时它会释放那些按钮吗?检查它的 viewDidLoad 函数。

于 2012-04-24T18:27:10.667 回答