2011-12-22 39 views
-2

我已經在Xcode 4.2.1中創建了標準的基於頁面的應用程序。基於頁面的應用程序修改

我需要改變ModelController.m

它有方法 -

- (DataViewController *)viewControllerAtIndex:(NSUInteger)index storyboard:(UIStoryboard *)storyboard; 

爲每個頁面這種方法創造新DataViewController

DataViewController *dataViewController = [storyboard instantiateViewControllerWithIdentifier:@"DataViewController"]; 

我希望只使用一個DataViewController實例所有頁面在這個應用程序。若要更改方法viewControllerAtIndex這樣:

if (dataViewController == NULL) { 
    dataViewController = [storyboard instantiateViewControllerWithIdentifier:@"DataViewController"]; 
} 

dataViewController.dataObject = [self.pageData objectAtIndex:index]; 

但是這不能正常工作。

感謝您的提前。

+2

「這不能正常工作」對任何人都沒有用。它出什麼問題了? – jrturton

回答

0

我認爲人們需要更多關於「如何」不起作用的細節。如果它創建DataViewController的多個實例,您是否嘗試過將塊放入@synchronized塊?在黑暗中拍攝的類型,但這是我第一次嘗試..

+0

我不能很好地描述「如何」。但是,如果將塊放入@synchronized塊,有什麼幫助?謝謝 – isak

+0

它有助於避免多個線程同時訪問if塊。如果發生這種情況,可能會多次調用[storyboard instantiate ...]。很難想象多線程訪問這段代碼的情況,但我不知道你的整個代碼,所以我認爲這可能值得一試。 – barley

+0

可能你覺得我的bug?不是。它是通常爲每個頁面新建實例創建的Apple模板。在ModelController.m的頭文件中,您可以閱讀「沒有必要事先爲每個頁面創建視圖控制器 - 實際上這樣做會導致不必要的開銷」。 – isak

相關問題