2012-04-17 3 views
0

view1.hпереноса INT между viewControllers

#import “view2.h" 

@interface ViewController : UIViewController 
{ 
int count;  
} 
@property (nonatomic, assign) int count; 

в view1.m

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 

if([segue.identifier isEqualToString:@"rating"]) 
{ 
    NSLog(@"identifier: help %@ \n",segue.identifier); 

    view2 *vc = [segue destinationViewController];             
    vc.imageNumber = &(count); 

} 
} 

в view2.h

#import “view1.h" 

@interface view2 : UIViewController 


@property (nonatomic) int *imageNumber; 

в view2.m

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 

NSLog(@"imagenumber %@\n",imageNumber);  

} 

Что здесь не так? В идеале я хочу, чтобы иметь возможность отправлять информацию в обоих направлениях ... но я просто пытаюсь понять, что не так с передачей в одну сторону. Благодарю.

ответ

2
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 

if([segue.identifier isEqualToString:@"rating"]) 
{ 
    NSLog(@"identifier: help %@ \n",segue.identifier); 

    view2 *vc = [segue destinationViewController]; 
    //viewDidLoad has already happened.            
    vc.imageNumber = &(count); 

} 
} 

Вы проверяете, установлен ли вы в viewDidLoad. viewDidLoad уже произошло к тому времени, когда вы находитесь в prepareForSegue. Попробуйте изменить, чтобы использовать viewWillAppear или viewDidAppear и посмотреть, что будет потом. Я думаю, все должно работать.

EDIT Извините, я не смотрел на ваш NSLog достаточно близко. %@ в строке формата, как то, что вы используете в NSLog, является подставкой для NSString, предполагает, что аргумент NSObject и пытается вызвать [imageNumber description], что в данном случае явно бессмысленно. На самом деле вам нужно использовать стандартный целочисленный маркер в строке формата, а затем разыменовать указатель. Правильная инструкция NSLog будет выглядеть так:

NSLog(@"imagenumber %d",*imageNumber); 
+0

Все еще падает в этот момент .... в заявлении NSLog в представленииDidappear –