Вы можете достичь этого, добавив фильтр bool/must_not
, содержащий фильтр ids
с массивом идентификаторов, которые вы не хотите отображать, например:
{
"query": {
"bool": {
"must": [
... <--- your other filters go here
],
"must_not": [
{
"ids": {
"values": [
"id1", "id2" <--- add all the ids you DON'T want in here
]
}
}
]
}
}
}
Я вполне уверен, что эти backBarButtonItem
свойство только для чтения. Вместо того, чтобы изменить эти backBarButtonItem
, попытайтесь установить пользовательское leftBarButtonItem
и скройтесь backBarButtonItem
:
self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Prout" style:UIBarButtonItemStyleDone target:nil action:nil] autorelease];
self.navigationItem.hidesBackButton = YES;
необходимо будет также удостовериться, что Вы поднимаете трубку пользовательскую кнопку для вызова обратного действия на UINavigationBar
.
Я готов поспорить, что это ошибка со стороны Apple, поскольку я сталкиваюсь с той же проблемой. Причина в том, что я могу получить настраиваемый UIBarButtonItem
, но только когда я не пытаюсь использовать метод initWithCustomView:
. Согласно API, контроллер навигации проверяет следующие вещи, когда нажимается новый контроллер представления:
В моем случае (как и в вашем) 2. Я указываю код точно , такой же, как у вас (т.е. , создание UIButton
, установка его свойств image
для различных состояний, создание UIBarButtonItem
, инициализация его с помощью UIButton
, затем установка my свойство backBarButtonItem
контроллера текущего представления в UIBarButtonItem
); тем не мение, когда я позже нажимаю на контроллер представления, в левой части контроллера навигации ничего не отображается. Как ни странно, я могу щелкнуть там, где должна быть кнопка «Назад», и отобразится контроллер представления.
Интересно, что если я создаю UIBarButtonItem
с помощью initWithTitle: style: target: action:
вместо метода initWithCustomView:
, он показывает настраиваемую кнопку с настраиваемым заголовком. Кроме того, как упоминал Трэвис, использование свойства leftBarButtonItem
вместо этого работает нормально. Однако я бы предпочел придерживаться санкционированной логики, указав кнопку «Назад» для текущего контроллера представления - чтобы она отображалась позже при нажатии нового контроллера представления - вместо создания левой кнопки для следующего контроллера представления. , который, возможно, он не должен беспокоиться ни о чем, относящемся к предшествующему контроллеру представления. : - \
Backbarbuttonitem не только для чтения имущество. Я не уверен, почему это ведет себя так странно, и вышеизложенное является действительным (если менее идеальный) обходной путь.
Это ведет себя странно, потому что установка Backbarbuttonitem VC не меняет ничего о появлении навигационного элемента VC - вместо этого он меняет кнопку, которая указывает обратно в VC. См. Обновление навигационной панели от Apple FMI.
Это сказало, что у меня не было много повезло, чтобы работать на себя. Если вы посмотрите на этот сайт, вы найдете несколько потоков, которые предлагают размещение кода, очень похожи на то, что у вас уже есть непосредственно перед вызовом, чтобы нажать новый вид на стек. Мне повезло там, но, к сожалению, не когда дело доходит до использования пользовательского изображения.
Хотя на этот вопрос уже ответили, у меня сработало:
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"backArrow.png"] style:UIBarButtonItemStyleBordered target:nil action:nil];
self.navigationItem.backBarButtonItem = backButton;
[backButton release];
BTW: даже в iOS4 инициализация кнопки "назад" с помощью initWithCustomView: у меня не сработала. ;(