我有一個簡單的「鑽入」模式的應用程序。我以地圖模式或列表模式呈現項目列表。點擊一個潛入更詳細的「編輯」視圖控制器。我的編輯控制器具有從segue初始化目標視圖控制器狀態的正確方法?
@property (assign, nonatomic) BOOL showMap;
而在代碼實現的setter/getter方法:
#pragma mark - Properties
- (BOOL) showMap {
return self.viewModeSegments.selectedSegmentIndex == 1;
}
- (void) setShowMap: (BOOL) showMap {
self.view; // had to add this, it's a hack
self.viewModeSegments.selectedSegmentIndex = showMap ? 1 : 0;
}
我與啓動控制器設置該屬性:
#pragma mark - Navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString: @"ValveEditSegue"]) {
ValveEditController* controller = segue.destinationViewController;
controller.valve = self.selections.anyObject;
controller.showMap = ShowMap;
}
}
我發現了什麼,是showMap
setter發生在view
已填充之前,因此viewModeSegments
仍然是nil
。我試着用setter中顯示的黑客進行實驗,強制訪問self.view
以確保它已加載。但是這似乎是一個糟糕的主意。我不知道的是,我用應該用來代替。
我可以使showMap
一個正常的財產與支持,然後鏡像在viewDidLoad
時間狀態到小工具,但似乎傻有一個屬性/狀態只是像效果一次蹦牀。