Похоже, что когда вы устанавливаете изображение bg, вы фактически не устанавливаете его в rootViewController. Или, если да, то когда он выполняет viewDidUnload, а затем viewDidLoad, изображение bg не сохраняется.
Вы должны поместить изображение, выбранное пользователем, где-нибудь, чтобы rootViewController мог получить к нему доступ при вызове метода viewDidLoad, и переустановить его при вызове этого метода.
Вот некоторый удобный код для просмотра подвидов данного представления, чтобы вы могли увидеть, что на самом деле внутри представления.
Перетащите приведенный ниже код в новый класс InspectView и вызовите его следующим образом:
[InspectView dumpViewToLog:rootViewController.view];
Вот класс:
InspectView.m
#import "InspectView.h"
#define THE_LOG NSLog
@implementation InspectView
+ (void)dumpViewToLog:(id)viewObj {
THE_LOG(@"%@", [self dumpViewToString: viewObj] );
}
+ (NSString *)dumpViewToString:(id)viewObj {
NSString *s = @"\nInspect view hierarchy -----------------------------------" ;
s = [ s stringByAppendingFormat: @"\n original view is (0x%x)", viewObj];
// go up to outtermost view.
while ( [viewObj superview] ) {
viewObj = [viewObj superview];
}
s = [ s stringByAppendingString:[self dumpViewToString: viewObj level:0] ];
s = [ s stringByAppendingString: @"\nEnd of view hierarchy -----------------------------------"];
return s;
}
+ (NSString *) dumpViewToString:(id)viewObj level:(int) level {
NSString * s=@"\n";
// indent to show the current level
for (int i = 0; i < level; i++) {
s = [s stringByAppendingString:@". "];
}
s = [s stringByAppendingFormat:@"%@ (0x%x): frame:(%f,%f) %f x %f [tag=%d] ", [[viewObj class] description], viewObj,
((UIView*)viewObj).frame.origin.x,
((UIView*)viewObj).frame.origin.y,
((UIView*)viewObj).frame.size.width,
((UIView*)viewObj).frame.size.height,
((UIView*)viewObj).tag
]; // shows the hex address of input view.
// s = [s stringByAppendingFormat:@"%@ : ", [[viewObj class] description] ];
id obj = [viewObj superclass];
while (NULL != obj) {
s = [s stringByAppendingFormat: @"%@ : ", [[obj class] description] ];
obj = [obj superclass];
}
// recurse for all subviews
for (UIView *sub in [viewObj subviews]) {
s= [s stringByAppendingString: [self dumpViewToString:sub level:(level + 1)]];
}
return s;
}
@end
InspectView.h
#define objectString(anObject) [[anObject description] UTF8String]
#import <Foundation/Foundation.h>
#import <CoreFoundation/CoreFoundation.h>
@interface InspectView : NSObject {}
+ (void) dumpViewToLog:(id)viewObj ;
+ (NSString *)dumpViewToString:(id)viewObj;
+ (NSString *)dumpViewToString:(id)viewObj level:(int)level;
@end