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);
}
这里有什么问题?理想情况下,我希望能够以两种方式发送信息......但我只是想弄清楚单向传输有什么问题。感谢。
答案 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
已经发生了。尝试更改为使用viewWillAppear
或viewDidAppear
,然后查看会发生什么。我认为一切都会奏效。
EDIT
对不起,我没有仔细看你的NSLog
。格式字符串中的%@
就像您在NSLog
中使用的NSString
一样代表NSObject
,假设参数为[imageNumber description]
并尝试调用NSLog(@"imagenumber %d",*imageNumber);
在这种情况下,这显然是荒谬的。实际上,您需要在格式字符串中使用标准整数标记,然后取消引用指针。正确的NSLog语句如下所示:
{{1}}