1

分割ビューベースのアプリのベースを作成しようとしています。これは、過去2日間、機能しなかった、不完全だった、または古くなったチュートリアルをしばらく見て試してきたためです。

私が従うべきステップは何ですか、そして私が基本をセットアップした後:

  1. ツールバーのボタンの名前を変更するにはどうすればよいですか?
  2. ポップオーバーメニューを含めたいです。そのメニューの上部にある名前を変更するにはどうすればよいですか?
4

1 に答える 1

4

このチュートリアルは初心者を対象としています。しばらくの間Objective-cでコーディングしている場合は、おそらくここでは何も学習しません。

このチュートリアルを終えると、3つ(またはそれ以上)の異なるビューを備えた分割ビューベースのアプリと、アプリをナビゲートするためのポップオーバーメニューが表示されます。

ステップ1:Appleコードを入手する

AppleからMultiDetailsViewサンプルコードを入手(ダウンロード)します。 http://developer.apple.com/library/ios/#samplecode/MultipleDetailViews/Introduction/Intro.html

ここに画像の説明を入力してください

このコードは、2つの異なるビューを持つsplitviewベースのアプリケーションを提供します。このサンプルコードが存在することを知らない限り、これは大したことではありません。


ステップ2:すべてが機能することを確認する

Xcodeでプロジェクトを開きます。プロジェクトをビルドして実行し、すべてが正しく機能していることを確認します。アプリをビルドして実行しようとすると、次のエラーが発生しました。

XCode could not find a valid private certificate/valid key-pair for this profile in your keychain

私は自分の証明書が古くなっていることに気づきました(コードが直接アップルからのものだったので、これが明らかになっただけだと思いますか?)。同じ問題が発生した場合は、このスレッドを確認してください。または、アプリストアのXcodeから最新バージョンをダウンロードすることもできます。

とにかく、すべてが正しく機能している場合は、次の2つのビューが必要です。 ここに画像の説明を入力してください ここに画像の説明を入力してください


ステップ3:独自のビューを追加する

パートa:ファイルを作成する

次に、いくつかのビューを追加します(これはおそらくあなたが探しているものです)。

[ファイル]->[新しいファイル...]に移動します。

Xcode 4を使用している場合:Objective-C Classを選択し、サブクラスとしてUIViewControllerを選択し、「TargetedForiPad」と「WithXIBforuserinterface」がチェックされていることを確認します。 ここに画像の説明を入力してください

Xcode 3を使用している場合:UIViewControllerサブクラスを選択し、[TargetedforiPad]と[WithXIBforuserinterface]をオンにします。

ここに画像の説明を入力してください

ファイルは左側のメニューに表示されます。ファイルが間違った場所にある場合は、適切なディレクトリにドラッグできます(.hと.hはクラスの下にあり、.xibはリソースの下にある必要があります)。

ここに画像の説明を入力してください

まず、SecondDetailViewController.hの内容を.hファイルにコピーし、SecondDetailViewController.mの内容を.mファイルにコピーします。SecondDetailViewController最初にそれがあなたのファイルの名前を持っていると最初に言ったところはどこでも確認してください。

私の.hファイル: ここに画像の説明を入力してください

私の.mファイル: ここに画像の説明を入力してください


パートb:RootViewController.mコンテンツ

次に、RootViewController.mを開きます

現在、3つの元の.hファイルがインポートされています。作成したものを追加する必要があります。

ここに画像の説明を入力してください

次に、tableViewメソッドに移動し、戻り値を2から3に変更します。新しいビューを追加するたびに、この数を増やす必要があります。(つまり、このチュートリアルの完了後に別のビューを追加する場合は、それを4に変更します)。基本的に、このメソッドは、ビューの数を返すだけです。

ここに画像の説明を入力してください

そのすぐ下のメソッドは、メニューに表示されるものを処理します。ここでいくつかの変更を行う必要があります。if / elseステートメントに別のオプションを追加しているため、元のステートメントをelseに変更しif else、条件を指定する必要があります。この場合、2行目(インデックス1)かどうかを確認するだけです。(indexPath.row == 1)

ここに画像の説明を入力してください

次のメソッドは、表示するビューを処理します。if別のステートメントを追加します。私が緑色で示している最初の行にはYourViewHereViewController、.h/.mファイルの名前が含まれている必要があります。次に、私が@"YourViewHereViewController"赤で示しているところに、.xibファイルの名前を付ける必要があります。

ここに画像の説明を入力してください


パートc:xib

最後になりましたが、xibファイルを処理する必要があります。最初にSecondDetailView.xibを開き、ビューをコピーします。次に、作成した.xibファイルに貼り付けます(最初に存在する可能性のあるものはすべて削除します)。テキストをダブルクリックすると、ビューのタイトルを変更できます。

ここに画像の説明を入力してください

最後に行うことは、行の接続です。Controlキーを押しながら[ファイルの所有者]をクリックし、ツールバーにドラッグしてtoolBarを選択します(これにより、RootControllerボタンがtoolBarに表示されます)。

ここに画像の説明を入力してください

コントロール-ファイルの所有者をもう一度クリックし、それをビューにドラッグしてビューを選択します。

ここに画像の説明を入力してください


今すぐ実行してビルドすると、すべてが機能するはずです。


この時点で私が持っていたいくつかの質問があります:

Q:ツールバーのボタンの名前を変更するにはどうすればよいですか? A:ツールバー(およびそのためのボタン)はRootViewController.mファイルから制御されます。このメソッドを探してください

- (void)splitViewController:(UISplitViewController*)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController:(UIPopoverController*)pc {

    // Keep references to the popover controller and the popover button, and tell the detail view controller to show the button.
    barButtonItem.title = @"Root View Controller";
    self.popoverController = pc;
    self.rootPopoverButtonItem = barButtonItem;
    UIViewController <SubstitutableDetailViewController> *detailViewController = [splitViewController.viewControllers objectAtIndex:1];
    [detailViewController showRootPopoverButtonItem:rootPopoverButtonItem];
}

注意してください、あなたが望むものbarButtonItem.title = @"Root View Controller";に変更してください!@注:このフィールドを空白のままにすると、ボタンは表示されません。

Q:ポップオーバーメニューの上部にある名前を変更するにはどうすればよいですか? ここに画像の説明を入力してください

A:次の行を追加して、名前を宣言/変更します。self.title = @"Menu";、RootViewController.mファイルの- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {メソッドで。

ここに画像の説明を入力してください

于 2012-07-06T19:31:01.220 に答える