0

私は単純なものを作るのに苦労しています (少なくとも私はそれが単純だと思います) が、私はそれをすることができません!

少し説明してみます。

情報を表示するアプリです。ユーザーがビュー内にいるとき、ボタンをクリックするとポップオーバービューが表示され、知りたい情報を選択できます。

実際、ユーザーが popoverview のボタンをクリックしたときに、メイン ビューで作成した UILabel テキストを変更するアクションを作成できません。

誰でも何か考えがありますか?

念のために言っておきますが、メイン ビューと popoverview 用のクラスを作成しました。ただし、ポップオーバー ビューは、そのデザインを XIB ファイルで作成しました (これが重要かどうかはわかりません。そのため、これを入れています)。

さて、皆さんが私の質問を理解できたことを願っています。

前もって感謝します。

フェルナンド。

4

2 に答える 2

0

ポップオーバー内でさまざまなアクションを行っているときにメイン ビューで変更を確認するには、委任を使用する必要があります。まず、ポップオーバー コントローラーのヘッダー ファイル内にプロトコルを作成する必要があります。

#import <Foundation/Foundation.h>

@class MyPopoverController;
@protocol MyPopoverDelegate
- (void)valueChanged:(NSString*) newVal;
@end

@interface MyPopoverController: UIPopoverController 

@property (weak) id<MyPopoverDelegate> delegate;

@end

次に、.m で次のように実装します。

 - (void) someActionOccured
    {
        if([self.delegate respondsToSelector:@selector(valueChanged:)]){
           [self.delegate valueChanged:valueYouWantToSendBack];
        }
    }

メインクラスでは、MyPopoverDelegateプロトコルを実装する必要があることに注意してください。

@interface MainViewController: UIViewController <MyPopoverDelegate>

また、ポップオーバー コントローラーをインスタンス化すると、次のようになります。

/*
** inside MainViewController.m
*/ 
// remember to assign it's delegate 
MyPopoverController *popoverController = [MyPopoverController alloc] init]; 
popoverController.delegate = self;

また、プロトコルのメソッドを実装する必要があります。

/*
** inside MainViewController.m
*/ 
- (void)valueChanged:(NSString*) newVal
{
// process the string and display it where you need it
}
于 2013-07-02T18:55:53.823 に答える