1

私は基本的に、DetailViewController で PageViewController を使用するマスター/ディテール スタイルのアプリを持っています。PageViewController には 3 つの異なるシーンがあります。現在のシーンに応じてrightBarButtonItems、3 つのそれぞれに異なる設定をしています。2 つのシーンには rightBarButtonItem が 1 つしかありませんが、1 つのシーンでは 2 つが使用されています。

ユーザーがあるページから次のページに完全にスクロールする場合、問題はありません。ただし、ユーザーが rightBarButton アイテムの方向に途中までしかスクロールせず、画面がポップ バックすると、バー ボタン アイテムの 1 つだけが表示されます。

Appleのドキュメントによると:

配列内のすべてのアイテムを表示する十分なスペースがない場合、タイトル ビュー (存在する場合) またはバーの左側のボタンに重なるアイテムは表示されません。

これは何が起こっているのかを説明しています。ビューがボタンをロードするとき、ボタンに使用できるフレーム サイズのチェックを実行する必要があります。コントローラーは、ボタンがタイトルに重なることを認識し、タイトルを削除します。ボタンが表示されるか、この性質の何かを遅らせる必要があるだけです。これを克服する方法についてのアイデアはありますか?

のviewDidLoadでボタンを宣言する方法は次のとおりですDetailViewController

//Generate buttons 
    barButton = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil];
    [barButton setImage:[UIImage imageNamed:@"arrow-up.png"]];

    barButton2 = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil];
    [barButton2 setImage:[UIImage imageNamed:@"arrow-down.png"]];

次に、ボタンが必要な viewController に渡され、 に表示されviewDidAppearます。

- (void) viewDidAppear:(BOOL)animated
{
    //downButton and upButton are set from barButton and barButton2 which were created in the `DetailViewController`

    [upButton setTarget:self];
    [downButton setTarget:self];
    [downButton setAction:@selector(action1)];
    [upButton setAction:@selector(action2)];

    navItem.rightBarButtonItems = @[downButton, upButton];
}

前後の画像をいくつか示します

前写真

AfterPic

4

1 に答える 1