2011-10-20 15 views
0

私は、押されたときに別のView Controllerのメソッドを呼び出す必要があるボタン付きのテーブルビューセルを持っています。私はこの後に続きます。tutorialは、ストーリーボードの別のビューコントローラーにアクセスする方法の1つを示しますが、ビューコントローラーの位置をハードコーディングする必要があります。私のView Controllerの順序を変更するときはいつでも、コードを更新する必要があります。ここで別のビューコントローラからの呼び出しメソッドiOS StoryBoard

は彼らの方法である:

UITabBarController *tabBarController = (UITabBarController *) 
self.window.rootViewController; 
UINavigationController *navigationController = 
[[tabBarController viewControllers] objectAtIndex:0]; 
PlayersViewController *playersViewController = 
[[navigationController viewControllers] objectAtIndex:0]; 
playersViewController.players = players; 

む〜、それは何ですか?プレーヤービューをPlayersViewControllerの プレーヤープロパティに割り当てたいので、 のデータソースに対してこの配列を使用できます。しかし、アプリケーションデリゲートはまだ PlayersViewControllerについて何も知らないので、それを見つけるために ストーリーボードを掘り下げなければならないでしょう。これは私が迷惑を感じるストーリーボード の限界の1つです。 Interface Builderを使用すると、MainWindow.xibのApp Delegateへの参照は常に になります。 トップレベルのView ControllerからAppletの のアウトレットに接続することができます。これは現在ストーリーボードでは不可能です。 は、トップレベルビューの コントローラからのアプリケーションデリゲートへの参照を作成できません。それは残念ですが、私たちは常にそれらの 参照をプログラムで取得できます。

もっとクリーンな方法を知っている人はいますか?

テーブルビューのセルにIBOutletを作成しようとしましたが、何らかの理由でCtrlキーを押しながらクリックして他のビューコントローラにドラッグできません。

私も他のビューコントローラに私のボタンのIBActionを設定しようとしたが、私は、クリックされた何行知っておく必要がある、と私は-(IBAction) addButtonClicked:(id)sederから得ることができる唯一の情報はちょうどRectButtonあるsender情報、です。

ありがとうございます!回避策として

答えて

0

、あなたは何かにInterfaceBuilderでsendertagプロパティを設定し、ちょうどaddButtonClicked:方法で[sender tag]を比較することができます。私はタグがintであると信じています。

+0

ありがとうございます。私はそれを世話するために代表団に切り替えることになったが、タグは素晴らしいアイデアです。また、Appleデモで、ストーリーボード上の任意のViewControllerをロードするための[UIViewController storyboard]メソッドがあることがわかりました。私もそれを見てみましょう。しかし、アイデアをありがとう。私はどこかでそれを使用すると確信しています –