2014-01-17 75 views
1

我正在使用MVYMenu與故事板(XCode 5/iOS7)。我不得不修改使用xibs的例子。 到目前爲止,它的工作原理,但我想我的每個用戶點擊側邊菜單中的時間實例化一個控制器時,泄漏的視圖控制器: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

由於您正在使用故事板,因此您需要從tableViewController創建一個push segue到您的詳細視圖控制器並從didSelectRowAtIndexPath:方法調用這些segges。這是視圖控制器與故事板之間轉換的正確方式。它也恰好比你所做的要容易得多。如果你的行是靜態的,你甚至可以將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

相關問題