5

iPhone シミュレーターのポートレート モードまたはデバイスのランドスケープでは、すべてのナビゲーション バー ボタンが表示されますが、デバイスのポートレート モードで使用すると、ボタンは表示されません。以下は、ナビゲーション バーの画像です。

シミュレータはボタンを表示します

デバイスにボタンが表示されない

私がテスト用に持っているデバイスは、iOS 6.1.3 (10B329) を実行している iPhone 4S です。私が使用しているシミュレーターは、iOS 6.0/6.1 を実行するバージョン 7.0 (463.9.4) です。

編集モードで [検索] ボタンを削除することを検討していますが、モードに関係なくユーザーがこのオプションを利用できるようにしたいと考えています。

ヘルプや洞察をいただければ幸いです。

編集: 右のボタンは最初に作成されviewDidLoad:、次のように ViewController に追加されます。

_deleteBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemTrash target:self action:@selector(deleteRows:)];
_deleteBarButtonItem.tintColor = [UIColor redColor];

_searchBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSearch target:self action:@selector(searchButtonClicked:)];

self.navigationItem.rightBarButtonItems = @[_searchBarButtonItem, self.editButtonItem];

そして、編集モードに入るとき:

- (void)setEditing:(BOOL)editing animated:(BOOL)animated
{
    [super setEditing:editing animated:animated];

    if (self.tableView.isEditing) {
        // turn off editing
        _deleteBarButtonItem.enabled = NO;
        [self.tableView setEditing:NO animated:animated];
        [self.editButtonItem setStyle:UIBarButtonItemStylePlain];
        self.navigationItem.rightBarButtonItems = @[_searchBarButtonItem, self.editButtonItem];
    } else { 
        // turn on editing
        [self.tableView setEditing:YES animated:animated];
        [self.editButtonItem setStyle:UIBarButtonItemStyleDone];
        self.navigationItem.rightBarButtonItems = @[_searchBarButtonItem, _deleteBarButtonItem, self.editButtonItem];
    }
}
4

2 に答える 2

1

正直なところ、それは興味深いです。おそらく、それを支配的にするのは、タイトルのいくつかの特性です。私の経験では、「編集モード」ではオプションを少なくすることが常に最善です。その道を行くことにした場合、ここに役立つかもしれない小さなコードがあります。(当然、変数名はおそらく異なるでしょう)

// Get the reference to the current toolbar buttons
NSMutableArray *toolbarButtons = [self.toolbarItems mutableCopy];

if (editing) {
    // This is how you remove the button from the toolbar and animate it
    [toolbarButtons removeObject:self.myButton];
    [self setToolbarItems:toolbarButtons animated:YES];
} else {
    // This is how you add the button to the toolbar and animate it
    if (![toolbarButtons containsObject:self.myButton]) {
        // The following line adds the object to the end of the array.  
        // If you want to add the button somewhere else, use the `insertObject:atIndex:` 
        // method instead of the `addObject` method.
        [toolbarButtons addObject:self.myButton];
        [self setToolbarItems:toolbarButtons animated:YES];
    }
}
于 2013-11-04T15:56:16.043 に答える