1
在我的應用程序中,如果我的目標是使用UISegmentedControl選擇另一個屏幕的bg顏色,那麼應該這樣做。問題是我已經嘗試過,所以無論您何時進入選項屏幕,分段控件都會記住您在離開屏幕時選擇的選項。它只記得5個選項中的一個!以下是選項屏幕中的代碼 - 奇怪的UISegmentedControl問題!
- (IBAction)changecolor:(id)sender {
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
if(segcolor.selectedSegmentIndex == 0){
//Red
UIColor *red = [UIColor redColor];
NSData *colordata = [NSKeyedArchiver archivedDataWithRootObject:red];
[prefs setObject:colordata forKey:@"ColorKey"];
}else if(segcolor.selectedSegmentIndex == 1){
//Yellow
UIColor *yellow = [UIColor yellowColor];
NSData *colordata = [NSKeyedArchiver archivedDataWithRootObject:yellow];
[prefs setObject:colordata forKey:@"ColorKey"];
}else if(segcolor.selectedSegmentIndex == 2){
//Green
UIColor *green = [UIColor greenColor];
NSData *colordata = [NSKeyedArchiver archivedDataWithRootObject:green];
[prefs setObject:colordata forKey:@"ColorKey"];
}else if(segcolor.selectedSegmentIndex == 3){
//Blue
UIColor *blue = [UIColor blueColor];
NSData *colordata = [NSKeyedArchiver archivedDataWithRootObject:blue];
[prefs setObject:colordata forKey:@"ColorKey"];
}else if(segcolor.selectedSegmentIndex == 4){
//Black
UIColor *black = [UIColor blackColor];
NSData *colordata = [NSKeyedArchiver archivedDataWithRootObject:black];
[prefs setObject:colordata forKey:@"ColorKey"];
}
}
上述方法已連接到IB中的'值已更改'方法,即segcolorcontrol。segcolor。而且...
- (void)viewWillAppear:(BOOL)animated {
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSData *colordata = [prefs objectForKey:@"ColorKey"];
if ([NSKeyedUnarchiver unarchiveObjectWithData:colordata] == [UIColor redColor])
segcolor.selectedSegmentIndex = 0;
if ([NSKeyedUnarchiver unarchiveObjectWithData:colordata] == [UIColor yellowColor])
segcolor.selectedSegmentIndex = 1;
if ([NSKeyedUnarchiver unarchiveObjectWithData:colordata] == [UIColor greenColor])
segcolor.selectedSegmentIndex = 2;
if ([NSKeyedUnarchiver unarchiveObjectWithData:colordata] == [UIColor blueColor])
segcolor.selectedSegmentIndex = 3;
if ([NSKeyedUnarchiver unarchiveObjectWithData:colordata] == [UIColor blackColor])
segcolor.selectedSegmentIndex = 4;
}
僅供參考,黑色是唯一可以記住的選項。
現在在主網頁...
- (void)viewWillAppear:(BOOL)animated {
//---------------------------------------------------------//
//----------------------BGData-----------------------------//
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSData *colorData = [prefs objectForKey:@"ColorKey"];
UIColor *bgcolor = [NSKeyedUnarchiver unarchiveObjectWithData:colorData];
self.view.backgroundColor = bgcolor;
if (bgcolor == [UIColor blackColor]) {
currentArtist.textColor = [UIColor whiteColor];
instructlabel.textColor = [UIColor whiteColor];
currentSong.textColor = [UIColor whiteColor];
} else if (bgcolor != [UIColor blackColor]) {
currentArtist.textColor = [UIColor blackColor];
instructlabel.textColor = [UIColor blackColor];
currentSong.textColor = [UIColor blackColor];
}
}
誰看見了什麼問題?
+1在這個長問題中指出確切的原因。 – chatur 2012-01-18 12:33:04