2013-04-05 1 views
0

Это просто, но я действительно не знаю, почему он всегда дает мне null.Отправить NSString другому UIViewController дает null

- FirstViewcontroller:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    [_tableView deselectRowAtIndexPath:indexPath animated:YES]; 

     SubViewViewController *viewTwo = [[SubViewViewController alloc] initWithNibName:@"SubViewViewController" bundle:[NSBundle mainBundle]]; 


    viewTwo.queryValue = [NSString stringWithFormat:@"%d",indexPath.row]; 

    [self.navigationController pushViewController:self.subViewController animated:YES]; 
} 

- SecondViewcontroller.h:

NSString    *queryValue; 
@property (nonatomic, retain) NSString *queryValue; 

- SecondViewcontroller.m:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    NSLog(@"%@", self.queryValue); 
} 
+0

Прежде всего, вы не должны больше создавать мгновенные переменные, свойство NSString достаточно. Если бы я был вами, я бы переопределил метод setQueryValue, поставил там контрольную точку и увидел, где проблема. –

+0

Я вижу, спасибо .. – Marckaraujo

ответ

3

В своем коде вы делаете неправильно, вы должны инициализировать ViewController, который вы подталкиваете к navigationController, вы инициализация viewTo, кроме вас толкают self.subViewController.

должно быть инициализировано следующим образом;

self.subViewController= [[SubViewViewController alloc] initWithNibName:@"SubViewViewController" bundle:[NSBundle mainBundle]]; 
1

изменения здесь

[self.navigationController pushViewController:viewTwo animated:YES]; 

ли изменение SecondViewcontroller.h файл

{ 
NSString    *queryValue; 
} 
@property (nonatomic, strong) NSString *queryValue; 
+0

Вам больше не нужно создавать мгновенные переменные, достаточно свойства NSString –

+0

@YunusNedimMehel Вы правы, но я только что отформатировал его код. – Dilip

0

добавить:
self.subViewController = viewTwo;

1

Вы подталкивают self.subViewController но вы передаете строку в viewTwo. Это два разных объекта. Используйте эту линию вместо:

[self.navigationController pushViewController:viewTwo animated:YES]; 
0

Пожалуйста, используйте следующий код

- FirstViewcontroller:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
    { 

     [_tableView deselectRowAtIndexPath:indexPath animated:YES]; 

self.subViewController = [[SubViewViewController alloc] initWithNibName:@"SubViewViewController" bundle:[NSBundle mainBundle]]; 


     viewTwo.queryValue = [NSString stringWithFormat:@"%d",indexPath.row]; 

     [self.navigationController pushViewController:self.subViewController animated:YES]; 
    } 

- SecondViewcontroller.h:

@property (nonatomic, retain) NSString *queryValue; 

- SecondViewcontroller.m:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    NSLog(@"%@", self.queryValue); 
}