2013-06-18 3 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

Я могу создать 10 различных кнопок через AddButton на моем uiview. Когда я снова закрываю приложение и исчезают 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 или core, это зависит от того, в чем я нуждаюсь. Но если это один объект (в данном случае массив), с ограниченным размером (не то, что убьет память), я использую NSUserDefaults ... Я все еще считаю себя новым для объектного-c, поэтому, пожалуйста, исправьте меня, если я ошибаюсь ... Спасибо – DrDev

0

Добавить все кнопки в массив. Затем добавьте массив UserDefault:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 

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

на вашем viewDidLoad: это сделать:

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

Наконец, цикл в массиве и добавить каждую кнопку

Приветствие

+0

, но если я хочу использовать файл? – user2244770

+0

У меня есть данные пользователя для успешной работы: ДА с помощью Сангони, но не уходи! на мой файл h, вещь, которую я должен добавить – user2244770

Смежные вопросы