2013-02-15 49 views
1

我有一個由兩個視圖控制器組成的iPhone應用程序;一個是主要的,另一個是幫助屏幕。每個人都有一個按鈕,執行從一個到另一個segue。我可以使用viewDidLoad之外的故事板在iPhone應用程序中初始化某些內容嗎?

我遇到的問題是,當我從幫助屏幕回到主屏幕時,主視圖控制器的viewDidLoad方法被調用,因此我重複了應用程序第一次啓動時所做的所有初始化操作。視圖控制器中是否有另一種方法只被調用一次,我可以在哪裏進行初始化?

我的第一個想法是,「有一個布爾變量最初設置爲false,然後有viewDidLoad測試它,如果它是假的,做初始化,然後將其設置爲true」 - 但我該如何初始化它首先是假的?在.M類文件

回答

1

@implementaition創建一個布爾值:

@implementation yourClass{ 

    bool initialize = 0; 
} 

,然後測試它的觀點做負載:

-(void)viewDidLoad{ 

    if(initialize == 0){ 

    //do everything you need to do 

    initialize = 1; 

    } 
} 

我認爲這會工作...

+0

這樣做的工作,但現在我有一個不同的問題:我有一個NSMutableArray按鈕(動態創建),通過IBOutletCollection連接到視圖,但是當我從幫助視圖退回到主視圖時,按鈕不再存在。我有一種感覺,問題可能是這兩個segues是模態的,在這種情況下,問題是,它們應該是什麼類型,以便幫助視圖不會導致主視圖被覆蓋? – 2013-02-15 21:54:26

+0

如果視圖在NavigationController上,那麼segues必須是Push。如果沒有NavigationController,則可以使用Modal。 – 2013-02-15 22:15:24

+0

問題解決了 - 我擺脫了Help-> Main segue,創建了一個新的UIViewController,將幫助storyboard的類更改爲新的視圖控制器的類,併爲調用dismissModalViewControllerAnimated的Help返回按鈕創建了一個操作。行! – 2013-02-15 22:24:31

2

我的猜測是你正在做一個「Push」segue(這是在iOS應用程序中可以執行的最常見的一種segue),並且如果你使用的是「push」segue,這意味着你有一個導航控制器你的應用。

最好事情做的,是不是另一個「主」視圖控制器推到其他視圖控制器的堆棧(這就是爲什麼你看到「viewDidLoad」之稱每次按下主視圖時間),但而當您點擊幫助屏幕中的「轉到主」按鈕時,彈出幫助屏幕關閉並返回到前一個。這樣做的調用是UINavigationController的popViewControllerAnimated方法。

這樣做意味着「viewDidLoad」在該視圖控制器上只會被調用一次,因爲主視圖會被加載一次。

相關問題