2009-05-25 21 views
0

ユーザーがボタンをクリックしたときに表示されるようにしたいと考えています。私が持っている階層は次のようになります。ビュー階層にサブビューを追加する

メインウィンドウ

-UIView 
--ScrollView 
---ScrollView.pages = UIViews 
----UIView (from above assignment) 
----TextView 
----InfoButton 

ページPageControllerでのオブジェクトのNSMutableArryです。これらはペン先に引っ掛けます。これらのペンは、ユーザーがスクロールビューでフリックするページです。

InfoButtonのクリックは、次のようにアップ配線されている:

- (IBAction) infoButton_click:(id)sender{ 
topView topViewViewController *topView = [[topViewViewController alloc] initWithNibName:@"TopView" bundle:[NSBundle mainBundle]]; 
//[self.navigationController pushViewController: topViewView animated:YES]; 
//[self.view addSubview: topViewView.view]; 
[super.view addSubview: topViewView.view]; 
[topViewView release]; 
} 

InfoButtonはScrollViewのページの一つです。私は試した異なるコードをコメントアウトしました。それのどれもビューを追加しません。何も起こりません。 TopViewを階層のトップビューとして取得する方法はありますか?

答えて

2

ビューをサブビューとして追加するか、ナビゲーションコントローラを使用して新しいビューをスライドさせることを目標にしていますか?私は今のところ後者を想定します。

- (IBAction)infoButton_click:(id)sender 
{ 
    TopViewController *topViewController = [[TopViewController alloc] initWithNibName:@"TopView" bundle:nil]; 
    [self.navigationController pushViewController:topViewController animated:YES]; 
    [topViewController release]; 
} 

これは実際にnavigationControllerがある場合は正しいです。実際に行ってください。ココアで「何も起こらない」とは、通常は何かがゼロであることを意味します。デバッガをチェックインするか、NSLog()を使用して、これらの値のいずれかがnilであるかどうかを確認する必要があります。あなたの親はnavigationControllerを持っていても、それはできません。

クラスには常に大文字が必要です。 "UIViewController"クラスの "view"という変数を作成しないでください。これは苦痛への確かな道です。 Objective-Cは、型のコンパイラチェックが制限された動的言語です。 ObjCでの効果的なプログラミングには、正しく命名することが重要です。

+0

これはiPhone(Cocoa Touch)にあります。これはナビゲーションコントローラではありません。ビューベースのアプリです。私はあなたのコードで試してみたように、私のOPには記載されていますが、うまくいきません。 – 4thSpace

+0

あなたの実際の目標は何ですか? 「TopView」はどのように表示しますか?既存のスクロールビューの一部でなければならないのですか(もしそうなら、どこですか?)、それは下からスライドするのか、それとも右にスライドして見たいのですか? ScrollView.pagesがあなたのダイアグラムにあるものはここではっきりしません。 「スーパー」はこの「ページ」ですか、それとも実際のUIScrollViewですか? –

+0

情報ボタンを押して別のビューを表示したいとします。 Star Trekアプリのようなフリップとして表示されるといいですか?しかし、スライドインは問題ありません。そのビューが表示されたら、ユーザーはもうスライド/スワイプできないはずです。これは設定/情報表示です。だから私はおそらくUIScrollViewの一部ではないと思っています。ユーザーは[完了]をクリックし、スクロールビューに戻ります。私はどのページが何であるかを説明するためにOPを編集しました。 "スーパー"の質問にはわかりません。たぶん、これらの説明が役立つでしょう。私にお知らせください。ありがとう。 – 4thSpace

1

前回の回答に対するあなたのコメントに基づいて、モーダルビューを提示する必要があります。新しいビュー "modalView"を作成し、[topView presentModalViewController:modalView animated:YES]を呼び出すことによって、これを行います。

iPhone OSの将来のバージョンでは、もちろんNDAの下でコメントできない場合は、ビューにプロパティを設定してフリップトランジション付きのモーダルビューコントローラを表示することができますコントローラは、おそらくmodalTransitionStyleまたはsomesuchと呼ばれるでしょう。

関連する問題