2014-01-17 3 views
1

Я использую MVYMenu с раскадными версиями (XCode 5/iOS7). Мне пришлось изменить пример использования xib. До сих пор, она работает, но я думаю, что я протечки контроллеры просматривать при инстанцировании контроллере каждый раз, когда пользователь нажимает на боковом меню:MVYMenuViewController: Как уничтожить контроллер представления, который был создан из раскадровки

Вот мой код:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

UINavigationController *navigationController; 
UIViewController * mrViewController; 

if (indexPath.row == 0) { 

    mrViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"mrViewController1"]; 

} else if (indexPath.row == 1){ 

    mrViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"mrViewController2"]; 

} else if (indexPath.row == 2){ 

    mrViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"mrViewController3"]; 

} else if (indexPath.row == 3){ 

    mrViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"mrViewController4"]; 

} else { 

    mrViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"mrViewController1"]; 

} 

navigationController = [[UINavigationController alloc] initWithRootViewController:mrViewController]; 
[[self sideMenuController] changeContentViewController:navigationController closeMenu:YES]; 

}

Когда я контролирую производительность, использование памяти увеличивается каждый раз, когда я нажимаю на ячейку таблицы, чтобы вывести новую сцену. Я думаю, что я должен уничтожить предыдущий контроллер представления где-то в приведенном выше коде, но я не знаю, как и где? Я новичок в iOS, исходя из Android ...

+0

Вы используете ARC? И как эти «mrViewController» существуют относительно табличного представления, в котором находится этот код? Я не знаком с 'MVYMenu'. Это не часть Vanilla Objective-C, и, насколько я знаю, это не обязательно распространено, поэтому может быть полезно некоторое объяснение того, как это должно работать. – nhgrif

ответ

1

Поскольку вы используете раскадровки, создайте push-сегмент (ы) из вашего TableViewController в контроллер подробных представлений и вызовите эти segues из метода didSelectRowAtIndexPath :. Это правильный способ перехода между контроллерами представлений с помощью раскадровки. Это также бывает намного проще, чем то, что вы делаете. Если вы стали статичными, вы можете даже привязать segues непосредственно к строкам, и вам не придется вообще программировать!

+0

Одно предостережение к последнему комментарию ... вам все равно придется отклонять контроллеры представлений ... – nhgrif

+0

Я использую раскадровки, но компонент MVYMenu (который изначально использует наконечники) создает TableView из отдельного ниба. Вот код из MVYMenuViewController: - (void) viewDidLoad { [super viewDidLoad]; // Выполняйте любую дополнительную настройку после загрузки изображения из его наконечника. \t \t [self.tableView registerClass: [UITableViewCell class] forCellReuseIdentifier: @ "MenuCell"]; \t self.menuItems = @ [@ "Пункт меню 1", @ "Пункт меню 2", @ "Пункт меню 3", @ "Пункт меню 4"]; } – mrd

+0

Могу ли я каким-то образом использовать раскадровки MVYMenu, чтобы я мог использовать правильный путь с помощью segues? (Мне нравятся раскадровки, Android не имеет ничего подобного ...) – mrd

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