2013-05-02 3 views
0

Мне нужно передать NSString с одного взгляда на другой. Я в моем first view controller:Прошел NSString всегда null

-(IBAction)btnCreate_click:(id)sender 
{ 
    CreateMatchTableViewController *matcObj = [[CreateMatchTableViewController alloc]init]; 
    matcObj.createBtnPressed = @"pressed"; 

    [self.tabBarController setSelectedIndex:1]; 

} 

CreateMatchTableViewController мой второй контроллер представления и createBtnPressed И. NSString объект во втором контроллере представления.

В viewDidLoad второго контроллера представления:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // MatchListViewController *obj = [[MatchListViewController alloc]init]; 

    NSString *stringFromFirstView = createBtnPressed; 

    NSLog(@"check===>%@",stringFromFirstView);//...always null 
} 

Пожалуйста, помогите !!

+0

Почему вы ожидаете, что, если вы создаете экземпляр объекта в btnCreate_click и присвоить ему значение, а затем пусть объект выходит за рамки (и будет уничтожен), значение таинственно материализуется в другом месте? –

ответ

1

Кажется, что в вашем первом контроллере представления вы создаете новый экземпляр CreateMatchTableViewController. Вы не хотите, что, поскольку у вас есть CreateMatchTableViewController экземпляр уже в контроллере панели вкладок ...

Попробуйте что-то вроде этого:

-(IBAction)btnCreate_click:(id)sender 
{ 
    CreateMatchTableViewController *matcObj = [self.tabBarController.viewControllers objectAtIndex:1]; 
    matcObj.createBtnPressed = @"pressed"; 

    [self.tabBarController setSelectedIndex:1]; 

} 

EDIT

-(IBAction)btnCreate_click:(id)sender 
{ 
    UINavigationController *navigationController = [self.tabBarController.viewControllers objectAtIndex:1]; 

    CreateMatchTableViewController *matcObj = [[navigationController viewControllers] objectAtIndex:0];// I put 0 assuming you have a CreateMatchTableViewController as the navigation controller's root view controller 
    matcObj.createBtnPressed = @"pressed"; 

    [self.tabBarController setSelectedIndex:1]; 

} 
+0

это исключение .... Завершение приложения из-за неотображенного исключения «NSInvalidArgumentException», причина: '- [UINavigationController setCreateBtnPressed:]: нераспознанный селектор, отправленный экземпляру – user2268539

+0

Если на этой вкладке есть контроллер навигации, вам необходимо получить доступ к этому контроллер просмотра в вашем навигационном контроллере, см. мое редактирование. – e1985

-1

Попробуйте

NSString* a = [[NSString alloc] initWithString:createBtnPressed]; 
+0

он дает исключение ... Завершение приложения из-за неотображенного исключения «NSInvalidArgumentException», причина: «*** - [NSPlaceholderString initWithString:]: аргумент nil ' – user2268539

+0

- это свойство createdBtnPressed, синтезированное? – epalleva

+0

Да ............ – user2268539

0

на CreateMatchTableViewController напишите способ вроде:

(void)setStringFromFirstViewController:(NSString*)str{ 
    NSString *stringFromFirstView = str; 
    NSLog(@"check===>%@",stringFromFirstView); 
} 

Теперь на «первый контроллер вида» сделайте следующее:

-(IBAction)btnCreate_click:(id)sender{ 
    CreateMatchTableViewController *matcObj = [[CreateMatchTableViewController alloc]init]; 
    [matcObj setStringFromFirstViewController: @"pressed"]; 
    [self.tabBarController setSelectedIndex:1]; 

} 
Смежные вопросы