Appcelerator Titanium 3.x/IOS7 无法将窗口添加为视图的子项

Posted

技术标签:

【中文标题】Appcelerator Titanium 3.x/IOS7 无法将窗口添加为视图的子项【英文标题】:Appcelerator Titanium 3.x/IOS7 Can not add a window as a child of a view 【发布时间】:2013-10-28 19:24:52 【问题描述】:

我继承了一个 Appcelerator 项目并且更新到 ios7 SDK 破坏了 iPad 中的拆分视图。 我收到此错误 [INFO] 无法将窗口添加为视图的子视图。回来了。 据我所知,代码正在尝试创建缺失的视图并将其添加到窗口中。我相信这可能与Appcelerators Migration Guide的这一部分有关!它指的是IOS7新窗口架构。其他所有内容似乎都没有问题地添加到窗口中。我不确定这是否重要,但它是一个 universla iPhone/iPad 应用程序。 我真的根本不使用 IOS 应用程序或 Appcelerator,我将不胜感激。

    function StyledWindow(title) 
      var self = Ti.UI.createWindow(
        title     :title,
        backgroundImage : '/images/bg-window.png',
        barImage    : '/images/header.png',
        barColor    : '#e6c661',  // currently set to gold.  Blue is #14243d. This appears to only work on iOS 7
        navTintColor  : '#e6c661',  // sets text color for what used to be nav buttons
        tabBarHidden  : true,
        translucent   : false,    // This value removes the translucentsy of the header in iOS 7
        statusBarStyle  :Titanium.UI.iPhone.StatusBar.LIGHT_CONTENT,  // This sets the window title to white text.
      );

      return self;
    ;
    var artWindow = new StyledWindow();
    var self = new StyledWindow('Articles');
    self.add(artWindow); // this is where the error occurs

【问题讨论】:

您不能将窗口添加到视图中。因此,将您的 StyledWindow 更改为视图,而不是窗口。 【参考方案1】:

Window 对象不能包含另一个 Window 对象。

不要调用StyledWindow() 两次,而是使用Ti.UI.createView() 并将其添加到顶层窗口:

function StyledWindow(title) 
  var self = Ti.UI.createWindow(
    title: title,
    barImage    : '/images/header.png',
    barColor    : '#e6c661',
    navTintColor  : '#e6c661',
    statusBarStyle: Titanium.UI.iPhone.StatusBar.LIGHT_CONTENT,
  );

  return self;
;

var artWindow = new Ti.UI.createView(
  backgroundImage : '/images/bg-window.png',
);

var self = new StyledWindow('Articles');
self.add(artWindow);
self.open();

【讨论】:

以上是关于Appcelerator Titanium 3.x/IOS7 无法将窗口添加为视图的子项的主要内容,如果未能解决你的问题,请参考以下文章

Appcelerator Titanium Mobile 如何工作?

使用 Titanium appcelerator 进行游戏开发

iOS、Appcelerator Titanium 和外部附件框架

iOS LocationManager 未更新位置(Titanium Appcelerator 模块)

Appcelerator Titanium 中面向 OOP 的 CommonJS

如何在Android中使用Appcelerator Titanium构建Oauth 2.0