Я понимаю, что есть много вопросов, похожих на этот, но просмотрев довольно много из них, мне все еще не хватает уверенности, чтобы знать, правильно ли то, что я делаю.Я прошу прощения, если этот вопрос является излишним, однако я бы очень хотел сказать, не является ли то, что я делаю, плохой практикой ...
Чтобы подвести итог, я делаю приложение, похожее на инструментПросто для моего тестирования.Внизу есть UIToolbar с кнопкой.С точки зрения поведения, когда пользователь нажимает кнопку, он открывает небольшое подпредставление в середине экрана.По сути, это подпредставление настроек, где пользователь может переключать некоторые настройки.Если пользователь снова нажимает кнопку панели инструментов, он должен закрыть подпредставление настроек.
В любом случае код выглядит следующим образом:
//Interface
@interface ViewController : UIViewController
{
SettingsViewController *settingsViewController;
}
@property(retain, nonatomic) SettingsViewController *settingsViewController;
А вот реализация:
//Implementation
-(IBAction)changeSettings:(id)sender
{
if(!settingsViewController)
{
settingsViewController = [[SettingsViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil];
//Do some stuff here with CGRect to put the subview in the center of the view
[self.view addSubview:settingsViewController.view];
}
else
{
[settingsViewController.view removeFromSuperview];
[settingsViewController release];
[self setSettingsViewController:nil];
}
}
На самом деле, сейчас с этим кодом происходит сбой, когда я пытаюсь закрыть подпредставление (например, когда код попадает в приведенный выше оператор else, он падает).
Глядя на вышекод, я подумал, что сохранение может выглядеть следующим образом:
- @ свойство сохранить в settingsViewController (сохранить 1)
- после alloc в settingsViewController (сохранить 2)
- после addSubview: settingsViewcontroller.view (сохранить 3)
Я думаю, что я здесь что-то не так делаю.Точнее, я знаю, что это так, потому что он падает.
Я действительно надеюсь, что это хороший вопрос.По сути, я хотел бы знать, как справиться с такой ситуацией.Я программно выделяю viewcontroller, а также делаю addSubiew, но я хотел бы сохранить ссылку на объект, так как он мне нужен в другом месте кода.Каков будет правильный способ справиться с этим?
Спасибо!