在viewControllers之间传递int

时间:2012-04-17 19:00:40

标签: ios segue uistoryboardsegue

view1.h

#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);    

}

这里有什么问题?理想情况下,我希望能够以两种方式发送信息......但我只是想弄清楚单向传输有什么问题。感谢。

1 个答案:

答案 0 :(得分: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中设置的int。当你在viewDidLoad时,prepareForSegue已经发生了。尝试更改为使用viewWillAppearviewDidAppear,然后查看会发生什么。我认为一切都会奏效。

EDIT 对不起,我没有仔细看你的NSLog。格式字符串中的%@就像您在NSLog中使用的NSString一样代表NSObject,假设参数为[imageNumber description]并尝试调用NSLog(@"imagenumber %d",*imageNumber); 在这种情况下,这显然是荒谬的。实际上,您需要在格式字符串中使用标准整数标记,然后取消引用指针。正确的NSLog语句如下所示:

{{1}}