0

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

メインウィンドウ

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

pages は 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 のページの 1 つにあります。試した別のコードをコメントアウトしました。どれもビューを追加しません。何も起こりません。階層のトップ ビューとして TopView を取得する方法はありますか?

4

2 に答える 2

2

ビューをサブビューとして追加すること、またはナビゲーション コントローラーを使用して新しいビューをスライドさせることが目標ですか? とりあえず後者を想定します。

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

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

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

于 2009-05-25T15:42:45.700 に答える
1

以前の回答に対するコメントに基づいて、モーダル ビューを表示します。これを行うには、新しいビュー " modalView" を作成し、 を呼び出し[topView presentModalViewController:modalView animated:YES]ます。

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

于 2009-05-25T20:48:17.350 に答える