2013-06-18 13 views
0

我有一個簡單的問題:我的用戶可以在UIView中添加按鈕。我將使用NSUserDefault來保存各種按鈕,然後在應用程序啓動時(不是後臺)將它們重新加載到UIView中。我該怎麼辦?如何保存/重新載入UIView中的各個按鈕

-(void)AddButton:(UIButton*)sender { 
     CountButton++; 
      if (CountButton< 11) { 
      button2 = [UIButton buttonWithType:UIButtonTypeCustom]; 
      button2.frame = CGRectMake(20, 80, 120, 80); 
      UIImage *buttonImage = [UIImage imageNamed:@"image"]; 
      [button2 setBackgroundImage:buttonImage forState:UIControlStateNormal]; 
      NSString* buttonTitle = [NSString stringWithFormat:@"Button%d", CountButton]; 
      [button2 setTitle:buttonTitle forState:UIControlStateNormal]; 
      NSString *selectorName = [NSString stringWithFormat:@"ButtonAdd%d:", CountButton]; 

    [button2 addTarget:self action:NSSelectorFromString(selectorName)forControlEvents:UIControlEventTouchUpInside]; 
}} 
+0

這是不非常清楚你想要什麼。你想知道如何使用NSUserDefault?另一件事,請儘量讓你的代碼更清晰(正確縮進)... – DrDev

+0

我可以在我的uiview上通過AddButton創建10個不同的按鈕。當我再次關閉我的應用程序時,10個按鈕消失。那麼我的用戶被迫重新創建10個按鈕。 如何保存從我的用戶創建的按鈕? – user2244770

+1

檢查我的答案或sangony的答案..兩者都會爲你工作 – DrDev

回答

0

在你的控制器,在viewDidLoad中,請檢查您以前存儲的NSUserDefault值和編程創建許多按鈕,並將其添加爲子視圖控制器的看法。

希望有所幫助。

+0

我已經用這種方式編輯我的文件h – user2244770

+0

但它可能沒有我可以幫忙嗎?拼命想要開發人員用一顆好心臟 – user2244770

0

NSUserDefaults適用於小塊數據。保存許多按鈕可能不是NSUserDefaults的最佳選擇。考慮使用文件。您可以在適當的時候在代碼中加載文件,以顯示保存的按鈕。

首先在發佈代碼中創建的按鈕,如:

button2 = [UIButton buttonWithType:UIButtonTypeCustom]; 
button2.frame = CGRectMake(20, 80, 120, 80); 
//etc... 

當您的按鈕寫入文件:

NSArray *documentDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
                    NSUserDomainMask, 
                    YES); 
NSMutableString *documentDirectory = [documentDirectories objectAtIndex:0]; 
NSArray *myArray = [[NSArray alloc] initWithObjects:myButton1, myButton2, myButton3, nil]; 
NSString *filePath = [documentDirectory stringByAppendingPathComponent:@"UserButtons"]; 
BOOL fileError = [myArray writeToFile:filePath atomically:YES]; 
NSLog(@"User data to file successful: %@",(fileError ? @"Yes" : @"No")); 

讀取文件:

NSArray *documentDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
                     NSUserDomainMask, 
                     YES); 
    NSMutableString *documentDirectory = [documentDirectories objectAtIndex:0]; 
    NSString *myPath = [documentDirectory stringByAppendingPathComponent:@"UserButtons"]; 
    NSArray *fileArray = [[NSArray alloc] initWithContentsOfFile:myPath]; 
    if([fileArray count] > 0) 
    { 
     // place your buttons back into the view. 
     // [self.view addSubview:[fileArray objectAtIndex:0]]; 
    } 
+0

好主意,但我不認爲10個按鈕的陣列對於NSUserDefaults是很多的... – DrDev

+0

我想它歸結爲偏好(雙關意圖)。我通常在「這是一種偏好」的規則下運作。如果是,那麼我使用NSUserDefaults。 – sangony

+0

我通常做的事情是,如果我有多個屬性,字段......我使用外部文件,plist或核心數據,它取決於我需要它。但如果它是一個對象(在這種情況下是數組),大小有限(不會殺死內存的東西),我使用NSUserDefaults ...我仍然認爲我的self-new是objective-c,所以如果我錯了,請糾正我...謝謝 – DrDev

0

添加一個Array的所有按鈕。在您的viewDidLoad

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 

      [userDefaults setObject:buttonArray 
          forKey:@"buttons"]; 
      [userDefaults synchronize]; 

:然後添加陣列UserDefault 做到這一點:

buttonsArray = [[NSUserDefaults standardUserDefaults] objectForKey:@"buttons"]; 

最後,循環數組中,並添加每個按鈕

乾杯

+0

但如果我想使用一個文件? – user2244770

+0

我有用戶數據文件成功:與Sangony幫助是,但不要走!在我的文件h上,我必須添加的東西 – user2244770