how to pass data from table view to second view controller?

iOS: How to pass first view controller label data of table view cell to textView of second view controller?

  • I am working on an app in which i want to show my table view cell label data of first view controller to the textView of second view controller when click on the button. I have implemented the code but when i click on button the textView of second view becomes blank. Kindly suggest me where i am doing mistake in the following code i have tried many times but couldn't succeeded. First View Controller: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.jobPostedTableView.dataSource = self; //Slide Navigation [self.sideNavigation addTarget:[SlideNavigationController sharedInstance] action:@selector(toggleLeftMenu) forControlEvents:UIControlEventTouchUpInside]; WebManager *manager = [WebManager sharedInstance]; [manager getJobPostedWithCompletionBlock:^(id response){ NSDictionary *dictionary = (NSDictionary *)response; // Read data from JSON NSDictionary *responseObject = [dictionary objectForKey:@"response"]; NSLog(@"The Array%@",responseObject); self.bids = [responseObject objectForKey:@"bids"]; self.job_description = [responseObject objectForKey:@"job_description"]; self.job_id = [responseObject objectForKey:@"job_id"]; self.job_completed = [responseObject objectForKey:@"job_completed"]; self.job_latitude = [responseObject objectForKey:@"job_latitude"]; self.job_longitude = [responseObject objectForKey:@"job_longitude"]; self.job_priority = [responseObject objectForKey:@"job_priority"]; self.job_start_date = [responseObject objectForKey:@"job_start_date"]; self.job_title = [responseObject objectForKey:@"job_title"]; [self.jobPostedTableView reloadData]; }]; self.reversedGeocodes = [NSMutableDictionary dictionary]; } #pragma mark - TableView Data Source - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [self.job_title count]; } - (NSInteger) numberOfSectionsInTableview:(UITableView *)tableView { return 1; } - (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *cellIdentifier = @"JobTableViewCell"; JobTableViewCell *cell = (JobTableViewCell *)[self.jobPostedTableView dequeueReusableCellWithIdentifier:cellIdentifier]; if(cell == nil) { cell = [[JobTableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; } // Comparing array string to display an urgent image if ([[self.job_priority objectAtIndex:indexPath.row] isEqualToString:@"urgent"]) { cell.urgentLabel.hidden = NO; } else { cell.urgentLabel.hidden = YES; } // Condition whether job completed is open or closed if ([[self.job_completed objectAtIndex:indexPath.row] isEqualToString:@"1"]) { cell.jobStatus.text = @"Open"; [cell.jobStatus setTextColor:[UIColor colorWithRed:(84/255.f) green:(56/255.f) blue:(255/255.f) alpha:1.0f]]; cell.flagImage.image = [UIImage imageNamed:@"jobPosted_opened.PNG"]; } else { cell.jobStatus.text = @"Closed"; [cell.jobStatus setTextColor:[UIColor colorWithRed:(179/255.f) green:(179/255.f) blue:(180/255.f) alpha:1.0f]]; cell.flagImage.image = [UIImage imageNamed:@"jobPosted_closed.PNG"]; } cell.jobTitle.text = [self.job_title objectAtIndex:indexPath.row]; cell.jobContent.text = [self.job_description objectAtIndex:indexPath.row]; cell.bidsLabel.text = [[self.bids objectAtIndex:indexPath.row ]stringValue]; // Latitude and Longitude float lat = [self.job_latitude[indexPath.row] floatValue]; float lng = [self.job_longitude[indexPath.row] floatValue]; [self locationNameWithLat:lat lng:lng completionHandler:^(NSString *locationName, NSError *error) { cell.locationJob.text = locationName; }]; return cell; } - (IBAction)onClickJobButton:(id)sender { JobDetailsViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"JobDetailsViewController"]; [self.navigationController pushViewController:vc animated:YES]; NSIndexPath *indexPath = [self.jobPostedTableView indexPathForSelectedRow]; JobDetailsViewController *jobDetailsController = [[JobDetailsViewController alloc]init]; jobDetailsController.jobDetailView = [self.job_description objectAtIndex:indexPath.row]; } Second View Controller: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. WebManager *manager = [WebManager sharedInstance]; NSString *user_name = manager.completeName; self.nameLabel.text = user_name; self.jobtextView.text = self.jobDetailView; }

  • Answer:

    If you are using segues, you can send the text using prepareForSegue method: - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Make sure your segue name in storyboard is the same as this line if ([[segue identifier] isEqualToString:@"YOUR_SEGUE_NAME_HERE"]) { // Get reference to the destination view controller YourSecondViewController *vc = [segue destinationViewController]; // Pass labelData which is a string [vc setTextString:labelData]; } } And don't forget to declare the string property in your SecondViewController.h @property(nonatomic,strong) NSString *textString;

ammar at Stack Overflow Visit the source

Was this solution helpful to you?

Related Q & A:

Just Added Q & A:

Find solution

For every problem there is a solution! Proved by Solucija.

  • Got an issue and looking for advice?

  • Ask Solucija to search every corner of the Web for help.

  • Get workable solutions and helpful tips in a moment.

Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.