Как я могу исправить «Навигационный контроллер» в Appcelerator для работы с TabGroup в качестве базового окна? - PullRequest
1 голос
/ 10 января 2012

Я просматривал некоторые учебные пособия по Titanium Appcelerator на канале Vimeo appcelerator, более конкретно этот: A Кроссплатформенный навигационный контроллер . Мне показалось довольно легко интегрировать это с базовым приложением, но у меня возникли некоторые проблемы с его настройкой для работы с tabGroups.

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

Есть идеи, что может быть причиной этого? Базовый обзор кода приведен ниже, а код NavigationController аналогичен приведенному выше. Заранее спасибо за любую помощь.

app.js:

(function() {
    var NavigationController = require('NavigationController');
    var windowObject = require('iPhoneWindow');
    new windowObject(new NavigationController()).open();
});

iPhoneWindow.js:

exports.iPhoneWindow = function(navController) {
    var NewsView = require('newsView');
    var instance = Ti.UI.createTabGroup({
        backgroundColor: '#FFF'
    });

    var newsTab = Ti.UI.createTab({
        window: new NewsView(navController),
        title: 'News'
    });

    instance.addTab(newsTab);

    return instance;
};

newsView.js:

exports.newsView = function(navController) {
    var instance = Ti.UI.createWindow({
        title: 'News',
        backgroundColor: '#000';
    });
    var button = Ti.UI.createButton({
        title: 'newsButton',
        height: 60,
        width: 180,
        top: 150
    });
    button.addEventListener('click', function() {
        navController.open(new exports.newsView(navController));
    });
    instance.add(button);

    return instance;
};

1 Ответ

3 голосов
/ 11 января 2012

Вам не нужно использовать этот кроссплатформенный навигационный контроллер с TabGroup - каждая вкладка имеет свой собственный стек навигации, который на устройствах iOS автоматически выдаст вам навигационный контроллер со всеми настройками. Чтобы открыть окна в стеке, вам нужно вместо этого получить активную вкладку и открыть окно для нее - так что вместо этого перейдите в вашу группу вкладок в NewsView:

exports.newsView = function(tabGroup) {
    var instance = Ti.UI.createWindow({
        title: 'News',
        backgroundColor: '#000';
    });
    var button = Ti.UI.createButton({
        title: 'newsButton',
        height: 60,
        width: 180,
        top: 150
    });
    button.addEventListener('click', function() {
        tabGroup.activeTab.open(new exports.newsView(tabGroup));
    });
    instance.add(button);

    return instance;
};
...