該項目目前有一個名爲「Dashboard」的UIviewController,它充當所有應用程序的主視圖。這個主視圖由兩個子視圖組成,有點像分割視圖。主(左視圖)的左側有多個按鈕。右側(右側視圖)將顯示左側選定按鈕的內容。具有多個視圖的UIViewcontroller
當按鈕被按下它會創建一個要顯示這樣的觀點的一個新實例:
vcMySchedule_iPad *vcSchedule = [[vcMySchedule_iPad alloc] initWithNibName:@"vcMySchedule_iPad" bundle:nil];
ncDashboard = [[UINavigationController alloc] initWithRootViewController:vcSchedule];
ncDashboard.navigationBar.barStyle = UIBarStyleBlackOpaque;
ncDashboard.view.frame = self.vwRightPanel.bounds;
[self.vwRightPanel addSubview:ncDashboard.view];
的事情是,按下另一個按鈕時會顯示另一種觀點,但內存前一個視圖的dealloc仍然保留,前一個視圖的dealloc永遠不會被調用。
我沒有使用分割視圖,因爲左側有一個按鈕,當推送它時,它將左側移動到左側,右側移動左側以完全查看。
有沒有辦法呢?
一些圖像更新...
主要(MainViewController):
壓制課程目錄:
vcCourseCatalog_iPad *vcCourse = [[vcCourseCatalog_iPad alloc] initWithNibName:@"vcCourseCatalog_iPad" bundle:nil];
ncDashboard = [[UINavigationController alloc] initWithRootViewController:vcCourse];
ncDashboard.navigationBar.barStyle = UIBarStyleBlackOpaque;
ncDashboard.view.frame = self.vwRightPanel.bounds;
[self.vwRightPanel addSubview:ncDashboard.view];
當選擇行形成表它顯示細節,如果用戶按下按鈕,視圖顯示爲最大。
我想我可能一直在呼籲新的觀點錯了也許。物體在哪裏發佈?
我沒有使用ARC。我使用名爲「removeViewsFromRight」的主視圖中的方法刪除視圖。由於用戶可以按下左窗格中的任何按鈕,我必須從主視圖中刪除視圖。 – Angie
在這種情況下,它非常簡單 - 正如我在1)中提到的那樣,在創建它們之後,您不會釋放它們。當您創建vcCourseCatalog_iPad時,它的保留計數爲1.然後將它傳遞給UINavigationController,UINavigationController在內部存儲對其的引用,將保留計數增加到兩個。當涉及UINavigationController時,它釋放vcCourseCatalog_iPad,給它一個保留計數1,你永遠不會擺脫因爲沒有引用它。如果你自動釋放vcCourseCatalog_iPad,那麼它將被正確處理。 – CrimsonDiego
謝謝你的所有幫助。知道我理解得更好。 – Angie