несколько экранов в Titanium Studio - PullRequest
0 голосов
/ 14 февраля 2012

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

Вот что я сделал:

app.js

var rotate = Titanium.UI.createButton({
    top:205,
    left:100,
    height:30,
    width:120,
    backgroundImage:"anim_ctrl_panel_1.png"
});

rotate.addEventListener('click', function()
{
      var window = Ti.UI.createWindow({
            url:"Window1.js",
            title:"Window1"
    });

   // Titanium.UI.currentTab.open(window,{animated:true});
   window.open();
}
);

Window1.js

var win1 = Titanium.UI.createWindow({  
    title:'Tab 1',
    backgroundImage:"photo1.png",
    backgroundColor:'#fff'
});

Но когда я нажимаю кнопку, ничего не происходит. Может ли кто-нибудь показать, как это правильно сделать.

Это то, что отображает моя консоль:

[UITabBarController setSelectedViewController:] может быть выбран только контроллер представления в списке контроллеров представления контроллера панели вкладок.

Так есть ли кто-то, кто может показать мне, как правильно это сделать?

ВАЖНО: Мне не нужна ссылка, куда идти отсюда, потому что я был здесь:

Титан: навигация с одного экрана на другой и в других местах, но я просто могу сделать эту работу. Спасибо

Ответы [ 3 ]

2 голосов
/ 14 февраля 2012

Вы не должны просто открыть окно. Есть два способа сделать это: создать модальное окно или использовать группу навигации.

Одно можно сказать наверняка, вы не должны заново создавать окно в Window1.js. Этот способ реализации на самом деле совершенно неправильный и вреден для вашей памяти.

Лучший подход - это сделать с помощью функции. (Вы также можете сделать это больше JavaScript OO) Добавьте этот код в Window1.js:

function createWindow1(){
    var win = Titanium.UI.createWindow({  
        title:'Tab 1',
        backgroundImage:"photo1.png",
        backgroundColor:'#fff',
        modal: true
    }); 
    return win;
}

После этого вы можете назвать это так в app.js

var window = createWindow1();

Но не забудьте сначала включить файл Window1.js (поверх файла или, по крайней мере, до вызова функции)

Ti.include('Window1.js');

Теперь к части open. Как видите, я добавил параметр modal в элемент окна. Это сделает окно открытым поверх других окон (это можно сделать только один раз)

Лучший способ сделать это - использовать NavigationGroup . Обратите внимание, что это не для Android, а только для iOS. Посмотрите для примера документацию. (предыдущая ссылка).

Структура для кода: окно> группа навигации> окно. Окно верхнего уровня не должно ничего делать, просто скрыть панель навигации. С помощью навигационной группы вы можете сделать open(window) и таким образом она откроет окно в стиле iOS (со стрелкой в ​​верхнем левом углу)

1 голос
/ 15 февраля 2012

На самом деле то, что рекомендует Topener, правильно на 99% ... вы не хотите использовать метод include, вы хотите использовать модуль commonJS.Это рекомендуемый подход от Appcelerator

https://wiki.appcelerator.org/display/guides/CommonJS+Modules+in+Titanium

0 голосов
/ 31 октября 2014

попробуйте это .... добавить window1.js

var win = Ti.UI.currentWindow(); win.title = 'tab 1'; win.backgroungImage="photo1.png"; win.backgroundColor= '#fff';
...