Search code examples
objective-cuitableviewuitextfielduisplitviewcontroller

Push a string and display in a UITextField


I am doing a small app and I am using a UISplitVIewController and I am trying to push the UITable cell text to the detail view and display it in a UITextField. I have managed to push the string nicely when i test it with a NSLog but when i apply to the UITextField it does not display not sure why here my method: (I am doing this using a storyboard)

-(void)pushModuleName:(NSString*)moduleName
{
    self.Lv4ModuleTitleTextField.text = moduleName;
    NSLog(@"name pushed%@",moduleName);
}

Not sure why this doesn't work.

[UPDATE]

UITableViewController.m (where the method is called)

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *selectedModule = [NSString stringWithFormat:@"%@",[_numberOfRows objectAtIndex:indexPath.row]];

    Lv4GradeViewController *lv4 = [[Lv4GradeViewController alloc] initWithNibName:nil bundle:nil];
    [lv4 pushModuleName:selectedModule];

}

Solution

  • The problem is that you're not getting a reference to the Lv4GradeViewController that you have on screen, you're creating a new one with alloc init. A split view controller, has a viewControllers array, with the controller at index 0 being the master controller, and the one at index 1 being the detail controller. So, the didSelectRowAtIndexPath method should look like this:

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        NSString *selectedModule = [NSString stringWithFormat:@"%@",[_numberOfRows objectAtIndex:indexPath.row]];
        Lv4GradeViewController *lv4 = self.splitViewController.viewControllers[1];
        [lv4 pushModuleName:selectedModule];
    }