在Xcode中构建时保存Interface Builder更改

时间:2009-10-12 18:20:58

标签: iphone xcode

我知道你们中的许多人都经历过相同的情况,你们正在敲打墙壁,想知道你的应用程序出了什么问题,却发现你忘了保存Interface Builder的更改。

嗯,这从来没有发生在我身上,因为出于某种原因,Xcode会提示我在构建时保存Interface Builder中的任何更改。一位同事和我正试图弄清楚如何在他的机器上改变这一点,但没有成功。我必须在iphone开发生命的早期阶段做一些事情来配置它。

有没有人知道如何将IB与Xcode链接,以便在构建期间提示保存对IB文件的更改?

8 个答案:

答案 0 :(得分:3)

其他人几乎问了same question(来自@balanon的链接)。答案由irsk

  

奇怪的是,它似乎是由   使用文件>打开您的项目   在Xcode中打开“最近的项目”菜单,或   通过使用最近的文档列表   Xcode欢迎屏幕。

     

如果我双击项目文件   Finder打开它或选择   来自最近项目菜单中的项目   Apple菜单,Xcode的连接   Interface Builder完好无损。

这是我的原始答案:

你们都有相同版本的Xcode吗?我注意到,自从我转移到Snow Leopard和Xcode 3.2之后,Xcode和Interface Builder之间的链接并不像早期版本那样强大。这看起来相当普遍 - 我至少在推特上看过不少抱怨 - 所以希望Apple能解决这个问题。

答案 1 :(得分:2)

你在运行64位时可能正在运行32位吗?

我好像回想起IB基于AppleEvent的64位Xcode通信问题。

答案 2 :(得分:1)

不确定但是您是否安装了最新版本的Apple开发环境?我被预设了。

答案 3 :(得分:1)

也许该设置未通过安装或升级正确传播。您是否尝试过关闭“For Unsaved Files”设置? (XCode - >偏好设置 - >建筑物)

答案 4 :(得分:1)

在SnowLeopard之前,IB曾经在我建立时自动保存我的更改。现在我必须手动保存,否则它不会使用我的最新更改。此外,IB不会维护或更新其“打开最近的”文件菜单(它是空的)。与你的好友一起检查他是否使用Xcode 3.2在SnowLeopard上。

答案 5 :(得分:1)

我认为这与xCode prefrences有关。

参见“xCode” - > “偏好” - > “建筑” - > “对于未保存的文件” - >选项

答案 6 :(得分:1)

这对我来说也很完美,但是停止使用Xcode 3.0。我确定必须有一些隐藏的设置,因为它适用于某些人,可能是那些在Xcode 2.x中激活它的人,但是我还没有找到它。

对于那些感兴趣的人,我有一个解决方法,涉及调用一个简单的AppleScript来保存所有开放的IB文档。以下是步骤:

1)创建Apple脚本,具体如下:

tell application "Interface Builder"
 set num to count of documents
 if num > 0 then
  repeat with i from 1 to num
   tell document i to save
  end repeat
 end if
end tell

2)将其保存为脚本(在我的示例中 /Users/myself/Programming/SaveIBFiles.scpt

3)在您的项目中,创建一个新目标。这是菜单“Project”»“New Target ...”,选择“Other”»“Shell Script Target”。我把它命名为“保存IB文件”

4)展开新目标,它已包含“运行脚本”阶段。调出此运行脚本阶段的信息,“常规”选项卡,将Shell保留在/bin/sh并按脚本编写:

if [ -f "/Users/myself/Programming/SaveIBFiles.scpt" ]; then
 osascript "/Users/myself/Programming/SaveIBFiles.scpt"
fi

5)现在选择原始目标,调用其信息,“常规”选项卡,并将新目标添加为直接依赖。

现在,无论何时构建应用程序,都会调用脚本,保存打开的IB文件,然后编译主目标。 请注意,如果您不创建新目标并仅向主目标添加“运行脚本”构建阶段,则保存似乎发生得太晚。

希望这有帮助!

答案 7 :(得分:1)

尝试从finder窗口打开xcode项目。升级到雪豹后,如果项目是从“最近的文件”选项加载的,则xcode和IB之间的链接会中断。

这个答案可能有关系 Interface Builder and Xcode integration not working