0

2つの異なるViewControllerを備えたストーリーボードアプリがあります。2番目のViewControllerにはUIImageViewがあり、最初のViewControllerでそのUIImageViewを呼び出したいと思います。私は解決策を探していましたが、私に役立つものが見つかりません。

@property(nonatomic, retain) IBOutlet UIImageView *pic;

そのUIImageViewを他のビューコントローラーで使用できるようにしたいだけです。あなたが私を助けてくれることを願っています。

4

2 に答える 2

1

編集:

はい、セグエの準備でUIImageViewを設定してみることができます。私はそれを試しました、そしてそれはうまくいくようです。あなたはそれを次のように行うでしょう:

**私はあなたが接続しているコントローラーがNewViewControllerと呼ばれていると仮定しています**またあなたのNewViewControllerがimageViewと呼ばれるUIImageViewを持っていると仮定しています

-(void)prepareForSegue....
  {
   if ([segueIdentifier isEqual....])
       {
        NewViewController *newController=(NewViewController *)[segue destinationViewController];

        [[newViewController imageView]setImage:self.someUIImageFromCurrentClass];
        [[newViewController imageView]setNeedDisplay];
       }
  }

はい、現在のクラス(この場合はself.someUIImageFromCurrentClass)にUIImageを作成する必要があります。つまり、現在のViewController(現在のクラス)から画像を取得し、それを接続先のViewControllerに表示しているということです。

オリジナル:

-(void) prepareForSegue: (UIStoryboardSegue *)segue sender:(id)sender
{
  if ([segue.identifier isEqualToString:@"your segue name"])
     {
       [segue.destinationViewController setYourUIImage:self.someImageFromCurrentClass];
     }
}

設定するコントローラーの.hファイルを必ずインポートしてください。

次に、YourUIImageは、(Michaelが言及したように)接続しているコントローラーで公に宣言されているUIImageです。

デスティネーションコントローラーで、そのUIImageを取得し、UIImageViewのイメージとして設定します。

[self.myImageView setImage:YourUIImage]; // <-- you can do this in ViewDidLoad or ViewWillAppear

それはあなたを動かすはずです

**また、セグエは、セグエの前には存在しない、セグエしているコントローラーの新しいインスタンスを常に作成することも言及する価値があると思います。そのため、イメージをセグエに渡す必要があります。

于 2012-11-24T22:54:51.687 に答える
0

あるVCが別のVCを参照するための自動アウトレットがないため、ビューコントローラー(VC)間でアウトレットを使用することはできません。必要な操作を可能にするパブリックプロパティまたはメソッドを公開し、あるVCから別のVCへの参照を渡す方法を見つける必要があります。

たとえば、セグエを介して1つのVCから別のVCに渡す場合、のソースから宛先VCのプロパティを操作できますprepareForSegueWithIdentifier:

于 2012-11-24T22:39:37.677 に答える