Mhmt
Mhmt

Reputation: 769

Passing value from selected row to view controller

I tried pass value from selected row to view controller. Log return null value in new view controller.Where is my mistake ?

 2013-06-18 17:28:59.394 App[1790:c07] ID is Here: 35023

 2013-06-18 17:28:59.397 App[1790:c07] Value in Next view  (null)

2013-06-18 17:28:59.398 App[1790:c07] Label is Here <UILabel: 0x9139810; 
frame = (14 140; 255 16); clipsToBounds = YES; opaque = NO; 
autoresize = RM+BM; userInteractionEnabled = NO; layer = <CALayer: 0x915ab10>>

TableViewController Code :

NSString *localStringValue;

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{    
    NSUInteger row = [indexPath row];
    NSString *value = [myArray objectAtIndex:row];

    DetailViewController *second=[[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil] ;

    second.PassID=value;

    [self presentModalViewController:second animated:YES];

    localStringValue = [tableView cellForRowAtIndexPath:indexPath].textLabel.text;
    NSLog(@"ID is Here: %@", value);
}

Next View Controller Codes:

.h

@interface DetailViewController : UIViewController
{
    NSString *PassID;
}
@property (nonatomic, retain) NSString *PassID;
@property (unsafe_unretained, nonatomic) IBOutlet UILabel *label;

.m codes

- (void)viewDidLoad
{

   label.text=PassID;
    NSLog(@"Label is Here %@",label);

    [super viewDidLoad];
}

Upvotes: 3

Views: 2624

Answers (3)

IronMan
IronMan

Reputation: 1505

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{    
    NSUInteger row = [indexPath row];
    NSString *value = [myArray objectAtIndex:row];

    DetailViewController *second=[[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil] ;

/// second.PassID=value; ///Remove the line here


    [self presentModalViewController:second animated:YES];

    second.PassID=value; ///assign the value after presenting


    localStringValue = [tableView cellForRowAtIndexPath:indexPath].textLabel.text;
    NSLog(@"ID is Here: %@", value);
}

Upvotes: 1

p.balmasov
p.balmasov

Reputation: 357

Make changes in DetailViewController.h

@interface DetailViewController : UIViewController 
@property (nonatomic, retain) NSString *label;

in DetailViewController.m

-(void)setLabelText:(NSString *)label{
    if(_label!=label)
        _label = label;
}

and use function

[second setLabelText:value];

and print with

NSLog(@"Label is Here %@",self.label);

Upvotes: 0

Vinny Coyne
Vinny Coyne

Reputation: 2365

Try NSLog(@"Label is Here %@", self.label); and see if that works.

The NSString *label; ivar in your .h file isn't necessary, as you're also declaring a property with the same name.

Upvotes: 0

Related Questions