2017-01-25 2 views
0

Я получил следующее определение ActionBarNativescript поведение кнопки '<Go Back'

<ActionBar class="action-bar" title="Settings"> <NavigationButton text="Go Back" android.systemIcon="ic_menu_back" tap="onBackTap"/> </ActionBar>

Андроида версия действительно дозвонились.

В версии iOS метод onBackTap никогда не вызывается.

Также, похоже, в версии iOS, даже если запись NavigationButton не существует, {N} вставляет один автоматически.

+0

Я только что узнал что-то новое, и, к моему удивлению, похоже, что вы не можете переопределить действие по умолчанию для NavigationBar в iOS. подробнее см. обновленный ответ. –

+0

Спасибо за ответ. Я просто хотел удостовериться, что я или мой компьютер не мешали с ума, так как вы первоначально разместили его, это должно работать. – dashman

ответ

0

UPDATE: В самом деле, кажется, что NavigationButton в прошивке может быть использован только для навигации назад и не может быть отменен с краном действия. Ссылка от the NativeScript documentation

В iOS кнопка «Назад» используется явно для навигации. Он переходит на предыдущую страницу, и вы не можете обработать событие tap до , чтобы отменить это поведение.

Что касается появляющегося NavigationButton для iOS - это по дизайну, как в родном приложении для iOS. Если вы не хотите иметь задние навигации вы можете заставить его

clearHistory: true 

раскомментировать this line в тестовом приложении и удалите navigationButton из sub-page и при навигации от main-page к sub-page NavButton не появится.

+1

Довольно уверен, что я делаю правильный звонок, потому что он работает как ожидается на Android, но я дважды проверю и вернусь через несколько часов. Что касается поведения кнопки IOS BACK - понимается и имеет смысл. – dashman

+0

Просто попробовал это на macOS - и это не вызов. Я скопировал вашу вторичную страницу дословно, а также скопировал начало навигации. Функция goBack не вызывается. Я был бы более чем счастлив клонировать ваш проект и попробовать его, но я не видел этого варианта. Следующим шагом я создам проект шаблона и запускаю его. Единственное отличие, которое я видел, это config_bundle - у меня этого нет. – dashman

+0

Вы пытались запустить мое приложение. Config_bundle не должен быть связан с этим. Проверьте версии вашей среды выполнения и модуля в файле package.json https: // github.com/NickIliev/NativeScript-Issues-2017/blob/master/stackoverflow/navigationButtonIOS/package.json # L8-L15 –

1

Так как @nick проверено, в версии iOS от {N} невозможно получить событие касания кнопки навигации. Я понимаю, почему {N} необходимо добавить кнопку BACK автоматически, если кнопки навигации нет (потому что у iPhone нет физической кнопки BACK), но не вызывая существующее событие крана, IMHO, добавляя ненужные различия в структуре , Вот предлагаемая логика для iOS.

if NavigationButton present then if tap event handler set by user then use it else auto-gen a tap event handler else auto-gen a back-button and a tap event handler

Во всяком случае, вот как я получаю вокруг этого вопроса для моего приложения.

<NavigationButton visibility="collapse"/> <ActionItem ios.position="left" text="< Back" tap="onBack"/>

Это становится поведение я ожидаю и является кросс-платформенной совместимости с Android версии.

Смежные вопросы