title: Setting the UITableViewCell from a picker selection
body: <p>So far I have made a <code>UITableView</code> in a <code>HabitViewControlle</code> with a button to add a new cell. When the cell is tapped, a <code>detialViewController</code> is revealed. In this View their is a <code>textField</code>, that when tapped a <code>UIPicker</code> is launched. I want to set the title of a <code>tableViewCell</code> to the picker selection.. I have made a <code>string</code> called <code>cellName</code> and I can send it to the other <code>ViewController</code>. I also made it so that when the <code>picker</code> is changed, I set the string <code>cellName</code> to the title I want the cell to be when the picker selection is selected. So I almost have it ready, except actually setting the cell title to the string when the cellName is set, and the picker selection has changed. If this didn't make sense, send a comment to me, and I will try to help, because I hard time writing my question into words</p>
  
  <h1>habitViewController.h</h1>
  
  <pre><code>#import &lt;UIKit/UIKit.h&gt;
  
  #import "DetailViewController.h"
  
  @interface HabitViewController : UITableViewController &lt;DetailViewDelegate&gt; {
  
      UITableViewCell *cell;
  }
  
  @end
  </code></pre>
  
  <h1>.m</h1>
  
  <pre><code>#import "HabitViewController.h"
  
  #import "DetailViewController.h"
  
  @interface HabitViewController () {
      NSMutableArray *_objects;
  
  }
  @property(strong, nonatomic) NSString *cellName2;
  
  
  @end
  
  @implementation HabitViewController
  
  - (void)awakeFromNib
  {
      [super awakeFromNib];
  }
  
  - (void)viewDidLoad
  {
      [super viewDidLoad];
      // Do any additional setup after loading the view, typically from a nib.
      self.navigationItem.leftBarButtonItem = self.editButtonItem;
  
      [self.editButtonItem setTintColor:[UIColor colorWithRed:.33 green:.33 blue:.33 alpha:1]];
  
      UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(insertNewObject:)];
      self.navigationItem.rightBarButtonItem = addButton;
      addButton.tintColor = [UIColor colorWithRed:.33 green:.33 blue:.33 alpha:1];
  
      [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"nav_bar.png"] forBarMetrics:UIBarMetricsDefault];
  
      //if ([cellName isEqualToString:@"Hello World"]) {
     // }
  
  }
  - (void)viewDidAppear:(BOOL)animated {
  }
  - (void)didReceiveMemoryWarning
  {
      [super didReceiveMemoryWarning];
      // Dispose of any resources that can be recreated.
  }
  
  - (void)insertNewObject:(id)sender
  {
      if (!_objects) {
          _objects = [[NSMutableArray alloc] init];
      }
      [_objects insertObject:[NSDate date] atIndex:0];
      NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
      [self.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
  }
  
  #pragma mark - Table View
  
  - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
  {
      return 1;
  }
  
  - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
  {
      return _objects.count;
  }
  
  - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
  {
      cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
  
      NSDate *object = _objects[indexPath.row];
      cell.textLabel.text = [object description];
  
      cell.textLabel.text = @"New Habit";
  
      NSLog(@"%@",self.cellName2);
  
      return cell;
  }
  
  - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
  {
      // Return NO if you do not want the specified item to be editable.
      return YES;
  }
  
  - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
  {
      if (editingStyle == UITableViewCellEditingStyleDelete) {
          [_objects removeObjectAtIndex:indexPath.row];
          [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
      } else if (editingStyle == UITableViewCellEditingStyleInsert) {
          // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view.
      }
  }
  
   // Override to support rearranging the table view.
   - (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath
   {
   }
  
   // Override to support conditional rearranging of the table view.
   - (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
   {
   // Return NO if you do not want the item to be re-orderable.
   return YES;
   }
  
  -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
      if([segue.identifier isEqualToString:@"showDetail"]) {
  
          /* assigning self as delegate, telling the detail view that I implement
           * setCellName2:, so it (the detailVC) can call it whenever it wants to.
           */
          [segue.destinationViewController setDelegate:self];
      }
  }
  #pragma mark - DetailViewDelegate
  
  // note: this is just a property setter so this is not actually needed
  - (void)setCellName2:(NSString *)cellName {
      cellName = cellName;
  
     NSLog(@"%@",cellName);
  
      cell.textLabel.text = cellName;
  }
  
  
  
  
  @end
  </code></pre>
  
  <h1>DetailViewController.h</h1>
  
  <pre><code>#import &lt;UIKit/UIKit.h&gt;
  
  @protocol DetailViewDelegate &lt;NSObject&gt;
  - (void)setCellName2:(NSString *)cellName;
  @end
  
  @interface DetailViewController : UIViewController&lt;UIPickerViewDelegate&gt; {
      NSArray *PickerData;    
  }
  @property (weak, nonatomic) IBOutlet UITextField *habitField;
  
  @property (weak, nonatomic) id&lt;DetailViewDelegate&gt; delegate;
  
  @property (nonatomic, strong) NSString *cellName;
  
  @property (retain, nonatomic) NSArray *PickerData;
  
  @property (weak, nonatomic) IBOutlet UIBarButtonItem *doneButton;
  
  - (IBAction)backToRoot:(id)sender;
  
  @end
  </code></pre>
  
  <h1>.m</h1>
  
  <pre><code>#import "DetailViewController.h"
  
  #import "HabitViewController.h"
  
  @interface DetailViewController () {
      UITableViewCell *_cell;
  
  }
  
  @end
  
  @implementation DetailViewController
  
  @synthesize PickerData;
  
  
  - (void)viewDidLoad
  {
      [super viewDidLoad];
      // Do any additional setup after loading the view, typically from a nib.
  
      NSArray *array = [[NSArray alloc] initWithObjects:@"Posture",@"Paludies Abbs",@"Custom", nil];
      self.PickerData = array;
  
      [self.delegate setCellName2:self.cellName];
  
      UIToolbar *toolBar = [[UIToolbar alloc] init];
      toolBar.barStyle = UIBarStyleBlackOpaque;
      [toolBar sizeToFit];
  
      [toolBar setBackgroundImage:[UIImage imageNamed:@"red_navigation_bar.png"] forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];
  
      UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
                                                                                 target:self
                                                                                 action:nil];
      UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone
                                                                                  target:self
                                                                                  action:@selector(releasePicker)];
  
  
      UIPickerView *Picker = [[UIPickerView alloc] init];
      Picker.showsSelectionIndicator = YES;
      Picker.delegate = self;
      doneButton.image = [UIImage imageNamed:@"button.png"];
  
      [toolBar setItems:@[flexSpace, doneButton] animated:YES];
      self.habitField.inputAccessoryView = toolBar;
  
      [self.habitField setInputView:Picker];
  
  }
  - (void)releasePicker {
      [self.habitField resignFirstResponder];
  }
  
  - (void)didReceiveMemoryWarning
  {
      [super didReceiveMemoryWarning];
      // Dispose of any resources that can be recreated.
  }
  
  - (IBAction)backToRoot:(id)sender {
      [self.navigationController popToRootViewControllerAnimated:YES];
  }
  -(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
      return 1;
  }
  
  -(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
      return [PickerData count];
  }
  
  -(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
      return [self.PickerData objectAtIndex:row];
  }
  
  -(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
      int select = row;
      if (select == 0) {
         self.cellName = @"Posture";
  
          [self.view reloadInputViews];
  
         NSLog(@"%@ Is Selected", self.cellName);
      }
  }
  
  
  @end
  </code></pre>