0

view1.h

#import “view2.h"

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

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

}

ここで何が問題なのですか?理想的には、情報を双方向に送信できるようにしたいのですが、一方向転送の何が問題なのかを理解しようとしています。ありがとう。

4

1 に答える 1

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

}
}

で設定した int を確認しますviewDidLoadviewDidLoadにいる時点ですでに発生していますprepareForSegueviewWillAppearorを使用するように変更してみてviewDidAppear、何が起こるかを確認してください。私はそれがすべてうまくいくべきだと思います。

編集申し訳ありませんが、私はあなたをNSLog十分に見ていませんでした。%@フォーマット文字列では、 in で使用するものNSLogは の代用でNSStringあり、引数が であると想定し、この場合は明らかに無意味なNSObject呼び出しを試みます。[imageNumber description]実際には、フォーマット文字列で標準の整数マーカーを使用してから、ポインターを逆参照する必要があります。正しい NSLog ステートメントは次のようになります。

NSLog(@"imagenumber %d",*imageNumber);
于 2012-04-17T19:05:27.993 に答える