2012-04-24 2 views
0

Я хочу отобразить пользовательскую панель, которая появляется на каждом экране моего приложения, с помощью кнопок, которые работают. Я добавляю CustomViewController к моим классам в методе init, и все работает правильно, за исключением случаев, когда я анализирую свое приложение, я получаю потенциальную утечку памяти.CustomViewController во всем приложении

Когда я отпускаю [customViewController release], кнопки в CustomViewController больше не будут работать. Каков правильный способ реализовать это решение без утечек памяти.

#import "CustomViewController.h" 

@implementation CustomViewController 

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

@end 

ViewController, который я создаю CustomViewController:

- (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]; 
    } 
} 

ответ

0

Правильным решением было создание вида контейнера и размещение моей настраиваемой панели задач внутри этого представления.

-1

Вы сказали, что ваш бар имеет кнопки? Выпускает ли эти кнопки, когда он сам выпущен? Проверьте функцию viewDidLoad.

+0

Кнопки подключены в построителе интерфейса, поэтому нет – Vikings

0

Вы, похоже, собираетесь реализовать это неправильно. То, что вам действительно нужно сделать, это создать CustomViewController и добавить панель инструментов в это представление. Затем каждый другой контроллер представления в вашем приложении должен быть подклассом CustomViewController.

Если пользовательская панель навигации является единственной вещью, в которой вы используете этот суперкласс, я бы рекомендовал просто стилизовать панель непосредственно на UINavigationController, которое использует ваше приложение.

+0

Это не настраиваемая панель навигации, а просто панель, которая может отображать элементы. Этот бар также будет меняться в зависимости от конкретного контроллера. – Vikings

+0

Ну определенно создайте свой суперкласс класса CustomViewController. Добавьте к этому интерфейсу свойство UIView * bar и @synthesize. Оттуда ваши подклассы могут позиционировать/изменять «бар» по мере необходимости. –

Смежные вопросы