我有一個簡單的應用程序,它是UITableViewController
s,UIViewController
s和UISplitViewController
s的組合。我現在將「橫向」導向到我的iPad應用程序。在橫向上更改UITplitViewController的UITableViewController主背景圖像
我已將其配置爲使縱向中的Master View
隱藏在UIBarButtonItem
後面,並且在橫向中顯示了主和細節視圖。我在我的應用程序中構建了自定義主題,它改變了背景,並且UINavigationBar
與所選主題相匹配。
問題
當景觀,並在主題選擇頁面,主視圖是菜單(UITableViewController
)和細節是主題選擇頁面(UICollectionView
)。如果我選擇了主題,UICollectionView
立即更新它的背景以代表新主題。然而,主視圖不會更新它的主題。這是問題。
在人像模式中,法師是因爲更新在它的viewWillAppear
,我到changeAppThemes
方法的調用:
- (void)changeAppThemes
{
NSLog(@"This is getting called");
self.selectedTheme = [[NSUserDefaults standardUserDefaults] objectForKey:@"Theme"];
if ([self.selectedTheme isEqualToString:@"Mystical"])
{
ThemeManager *themeManager = [ThemeManager sharedManager];
themeManager.backgrounds = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"PurplepinkIPAD.png"]];
self.tableView.backgroundView = themeManager.backgrounds;
UIImage *navBackgroundImage = [UIImage imageNamed:@"Purplepinknav.png"];
[[UINavigationBar appearance] setBackgroundImage:navBackgroundImage forBarMetrics:UIBarMetricsDefault];
}
在我的UICollectionView
的didSelectMethod
,我已經放置在changeAppThemes
方法的調用:
[[NSUserDefaults standardUserDefaults] setObject:self.selectedTheme forKey:@"Theme"];
[[NSUserDefaults standardUserDefaults] synchronize];
[self changeAppThemes];
MasterTableViewController *master = [[MasterTableViewController alloc] init];
[master changeAppThemes];
即在風景模式下工作,因爲NSLog
「This is getting called
」顯示。但是,主題並沒有改變。
如果我切換到人像模式並返回到風景,則會更新主題。
現在看來似乎缺少一個關鍵要素進行更新,即使我顯式調用從UICollectionView
的changeAppThemes
方法。
對此的任何指導將非常感激。
非常感謝@ gabbler - 此答案完美工作,我非常感謝您對此的幫助。它完全理解爲什麼這不適用於我的代碼,因爲它創建了一個新實例,而不是使用splitView中的那個 - 這非常棒。再次感謝和賞金愉快地頒獎! – amitsbajaj 2014-10-31 10:46:33
@Lavanya,不客氣! – gabbler 2014-10-31 13:03:04