UISearchBar в праве UINavigationBar в цели c - PullRequest
3 голосов
/ 18 января 2012

Я создал приложение для iPad, в котором мне бы хотелось, чтобы панель поиска находилась справа от панели навигации.

Когда я добавляю панель поиска в панель навигации, она располагается всередина навигационной панели.Вместо этого я хочу показать конкретное изображение.

Как этого добиться?

Вот мой фрагмент кода,

[self.navigationController.navigationBar setTintColor:[[UIColor alloc]initWithRed:150.0 / 255 green:22.0 / 255 blue:22.0 / 255 alpha:0.0]];

UIImage *image = [UIImage imageNamed:@"logo(1).png"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
[self.navigationItem setTitleView:imageView];

self.navigationItem.titleView = sBar;

[titleView release];

С помощью приведенного выше кода я могу видеть только панель поиска (расположенную посередине) в моем симуляторе.

Ответы [ 3 ]

12 голосов
/ 18 января 2012

Попробуйте:

UISearchBar *searchBar = [[[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 100, 40)] autorelease];
searchBar.backgroundImage = [[[UIImage alloc] init] autorelease];
self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:searchBar] autorelease];

Вы всегда можете изменить кадр.Всегда имейте в виду, что свойство backgroundImage доступно только в iOS 5. Вам следует искать альтернативные варианты, чтобы избавиться от фона для iOS 4.x

Дайте мне знать, если это работает для вас.

0 голосов
/ 05 октября 2013

Я облажался с этим, и я тоже не мог заставить вещи выравниваться должным образом (после добавления пары кнопок рядом с панелью поиска).

Пока кто-нибудь не предложит лучшего решения, вам, вероятно, лучше просто скрыть панель навигации ([self.navigationController setNavigationBarHidden: YES]) в этом представлении и заменить его на UIView со всеми необходимыми элементами интерфейса.Я думаю, что таким образом поведение более предсказуемо.

0 голосов
/ 18 января 2012

попробуй:

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:sBar];
...