iOS ︰ 如何将标签数据表格视图单元格的第一个视图控制器传递到 textView 的第二个视图控制器?

发布时间: 2016/5/9 0:13:27
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我正在进行我想表明我的表视图单元格标签数据的第一个视图控制器到 textView 的第二个视图控制器的应用程序时单击的按钮。实现了代码,但当我点击按钮的第二个视图 textView 就会变为空白。请建议我我哪里做错在下面的代码尝试了很多次,但不成功。

First View Controller

Second 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];
}

第二个视图控制器 ︰

- (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;

}

解决方法 1:

如果您使用的segues,你可以发送使用 prepareForSegue 方法的文本 ︰

- (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];
    }
}

别忘了将该字符串属性中的声明和你SecondViewController.h

   @property(nonatomic,strong) NSString *textString;
官方微信
官方QQ群
31647020