2015-06-12 2 views
2

У меня есть UIPickerView, который получает данные из массива, который определен вКак добавить строки в UIPickerView из UIAlertController

friends = [NSArray arrayWithObjects: @"jim", @"joe", @"anne", nil]; 

У меня есть кнопка под сборщиком, который должен добавить новые друг в подборщика. Когда кнопка нажата, появляется сообщение UIAlertController, и пользователь может ввести имя нового друга. Я могу сохранить текст как строку, но я не могу добавить его в массив. Я также пробовал использовать NSMutableArray.

Я новичок в этом, поэтому все входные данные были бы замечательными. Я посмотрел на подобные вопросы, но ничего не сработало.

Спасибо!

ответ

1

Ok поэтому я попытаюсь объяснить это:

Вы объявляете NSMutbleArray, вы не можете ожидать, чтобы использовать NSArray потому не изменяемые, и вы должны изменить содержание.

NSMutableArray *array; 
    UIAlertController * view; 
    @implementation ViewController 


    - (void)viewDidLoad { 
     [super viewDidLoad]; 
     NSArray* friends = [NSArray arrayWithObjects: @"jim", @"joe", @"anne", nil]; 
     array = [NSMutableArray arrayWithArray:friends]; 
// I added a UIPickerView in the StoryBoard, connected it to a property and the delegates and datasources. 
     self.pickerView.delegate = self; 
    } 

Затем вы объявляете DataSource из UIPickerView:

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{ 

    return 1; 

} 

// returns the # of rows in each component.. 
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{ 

    return array.count; 

} 
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{ 

    return array[row]; 

} 

Итак, вы представить свою UIAlertController, в этом случае я буду увольнять его в Return от TextView.

//This is an action connected to the button which will present the ActionController 
- (IBAction)addFriend:(id)sender { 



    view = [UIAlertController alertControllerWithTitle:@"Add Friend" message:@"Write the friend to add"preferredStyle:UIAlertControllerStyleAlert]; 

    [view addTextFieldWithConfigurationHandler:^(UITextField *textField) { 
     textField.placeholder = @"Friend"; 
     textField.delegate = self; 
     textField.tag = 01; 
    }]; 

    [self presentViewController:view animated:YES completion:nil]; 

} 
- (BOOL)textFieldShouldReturn:(UITextField *)textField{ 

    if(textField.tag == 01){ 

     [array insertObject:textField.text atIndex:array.count]; 
     [view dismissViewControllerAnimated:YES completion:^{ 
      [self.pickerView reloadAllComponents]; 
     }]; 

     return YES; 

    } 

    return YES; 

} 

Это более или менее то, что вы можете сделать, я был самым конкретным я мог бы быть, потому что вы сказали, вы новичок.

Надеюсь, что это поможет.

+0

спасибо за подробный ответ! Это именно то, что я искал. Прежде чем я попытался сохранить нового друга с помощью 'UIAlertAction'. Ваш метод намного проще. Еще раз спасибо. – njyulan

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