Ilya Kharlamov
Ilya Kharlamov

Reputation: 125

No information is passed to the DetailView Objective-c

my problem - I want to pass information from the TableView in DetailView, but somewhere in the self.detailViewController.detailItem no value is passed.

that is:

self.detailViewController.detailItem =@"123";

NSString *sss = self.detailViewController.detailItem;

NSLog(@"%@",  sss);

In NSLog output (null)

Here is my source code:

DetailViewController.h

#import <UIKit/UIKit.h>

@interface DetailViewController : UIViewController <UISplitViewControllerDelegate>

@property id detailItem;
@property id TitleOfDetail;

@property (weak, nonatomic) IBOutlet UILabel *detailDescriptionLabel;

@end

DetailViewController.m

#import "DetailViewController.h"

@interface DetailViewController ()
@property (strong, nonatomic) UIPopoverController *masterPopoverController;
- (void)configureView;
@end

@implementation DetailViewController




#pragma mark - Managing the detail item


-(void)setTitleOfDetail:(id)newTitleOfDetail {

    NSLog(@"123");

    if (_TitleOfDetail != newTitleOfDetail) {
        _TitleOfDetail = newTitleOfDetail;
        // Update the view.
        [self configureView];
    }
}


-(void)setDetailItem:(id)newDetailItem
{
    NSLog(@"123");

    if (_detailItem != newDetailItem) {
        _detailItem = newDetailItem;

        // Update the view.
        [self configureView];
    }

    if (self.masterPopoverController != nil) {
        self.title = self.TitleOfDetail;
        [self.masterPopoverController dismissPopoverAnimated:YES];
    }        
}

- (void)configureView
{
    // Update the user interface for the detail item.

    NSLog(@"1%@", self.TitleOfDetail);
    NSLog(@"2%@", [self.detailItem description]);

    if (self.TitleOfDetail) {
        self.title = self.TitleOfDetail;
    }


    if (self.detailItem) {
        self.detailDescriptionLabel.text = [self.detailItem description];
    }
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    [self configureView];
}
…

myclass.h

@class DetailViewController;

@interface myclass : UITableViewController 

@property DetailViewController *detailViewController;

@end

myclass.m

#import "choiseAvtoController.h"
#import "DetailViewController.h"

@interface myclass ()
@end

@implementation myclass

@synthesize detailViewController;

…

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    self.detailViewController.detailItem =@"123";

NSString *sss = self.detailViewController.detailItem;

NSLog(@"%@",  sss);
}

In what may be the problem and how to fix it?

P.S. Sorry for my english, I'm just learning))

Upvotes: 1

Views: 119

Answers (1)

Sergey Kalinichenko
Sergey Kalinichenko

Reputation: 726649

Since you are using a storyboard, you should be opening the detail controller on a segue.

Look up the segue identifier (say, it's OpenDetail) in the story board, then add the following code to your initial controller:

-(void)prepareForSegue:(UIStoryboardPopoverSegue*)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"OpenDetail"]) {
        DetailViewController *dest = segue.destinationViewController;
        dest.detailItem =@"123";
    }
}

Upvotes: 1

Related Questions