2011-12-13 15 views
0

[ViewController alloc]init]を実行せずにView Controllerでクラスを変更することはできますか?クラス編集ビューコントローラ

私は別のクラスをいくつか計算しています。私はViewControllerと他のものについてscrollView.contentInsetを変更する必要があります。

私のViewControllerには、下にテキストフィールドがあるスクロールビューが含まれています。ユーザーがそのテキストフィールドをタップすると、contentInsetプロパティをscrollViewに変更する必要があります。私はこれをすべてView Controllerのすべてではなく別のクラスを使って管理したいので、現在表示されているViewControllerscrollView.contentInsetに電話する必要があります。

+0

グローバル変数を考えましたか? –

+0

これはあまりにも曖昧で答えにくいです。あなたはあなたの質問を拡大し、いくつかのコードを投稿できますか? –

+0

更新されました。お知らせ下さい。 – Baub

答えて

0

私はこれを処理するいくつかの方法を考えます:

A.デリゲートメソッドを使用します。 B. NSNotificationCenter。

さらに詳しい情報が必要な場合は教えてください。

要求されるように

追加コード:scrollViewは(おそらくあなたのviewDidLoadメソッドで)オブザーバー文を追加しているのViewController内

、およびscrollviewのどんなプロパティを変更するメソッドを作成します。

は、NSNotificationCenterメソッドを使用するには

あなたは、単に通知を掲示変更されたことをscrollViewのcontentInsetを作りたいものは何でもクラスから
-(void)viewDidLoad 
{ 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myMethodToChangePropertyOfScrollview) name:@"ChangeScrollView" object:nil]; 
} 

-(void)myMethodToChangePropertyOfScrollview 
{ 
    //scrollView.contentInset = etc... 
} 

この好き:あなたが変更したい

[[NSNotificationCenter defaultCenter] postNotificationName:@"ChangeScrollView" object:nil]; 

デリゲートメソッドを使用するには、私の以前の回答の1つから別のSO postを使用することができます。しかし、あなたの場合、私はこれらの2つのクラス間の関係が何であるか100%確信していません。

+0

詳細をご覧ください。私の 'viewController'の' scrollView'のプロパティーを完全に別のクラスから変更する必要があることを覚えておいてください。 – Baub

+0

私は私の答えを編集しました。 – user523234

0

Mystery Object Xがスクロールビューを参照してメッセージを送信できるようにするには、その参照を明示的に指定する必要があります。Mystery Object Xの.hファイルで、スクロールビューの@propertyを宣言します。 MOXを作成するときは、scrollviewプロパティを設定します。今すぐMOXに必要なリファレンスがあります。

+0

私の 'ViewController'には' scrollView'があります。リモートクラスから '[ViewController alloc] init 'を呼び出すと、' @ property'だけを宣言できます。ビューは既に表示されているため正しく動作しません。 – Baub