【发布时间】:2018-01-29 22:21:37
【问题描述】:
假设我有一个 OSX 应用程序,其中有一些精灵在四处移动,称它们为 gremlins。当我单击一个 gremlin 时,我想显示一些滑块来控制该 gremlin 的某些属性,可能是比例、速度、方向等,然后再次单击该 gremlin 以关闭滑块。然后单击另一个 gremlin 并显示滑块以控制其属性。我可以轻松地创建一些 NSSlider 并在代码中进行设置。但我更愿意在 Interface Builder 中创建一组滑块,并按需加载它们:如果我想重新排列它们并使用它们的相对位置,最好使用那个可视化界面来做,而不是让摆弄代码,重新编译,运行,点击一个小精灵,看看它的样子。另外,总的来说,它似乎是更好的设计——但我不知道,我是 Apple Land 的新手,还没有在这个环境中做任何专业的事情。
我已经尝试在“Swift:以编程方式加载/连接到在 Interface Builder 中创建的控件”上搜索我能想到的所有变体,但没有找到任何关于如何执行此操作的演示或讨论,甚至没有迹象表明任何人都这样做。这让我担心这不是 Apple Land 的工作方式。这可能吗?禁止/不必要的困难?是人们做的吗?如果可能的话,它叫什么,即,我可以通过 Google 搜索更多信息吗?
【问题讨论】:
-
我从来没有做过这样的事情,但绝对可以做到。最坏的情况,一个视图控制器,中间有一个居中的视图(确实需要给它一个高度和宽度,但你可以稍后以编程方式调整它们)。具有 alpha 0 的外层和具有“清晰”背景颜色的居中层。然后将其呈现为 VC,而您的 UI 元素之外的任何触摸(通过委托)都可以 removeFromSuperview()。但是,我相信有一些方法可以使用“视图”,这会给您更大的控制力和灵活性,但这是您可以尝试的一种方法。
-
stackoverflow.com/questions/30335089/… 这可能是满足您需求的最佳方法
-
@AlexIoja-Yang 这正是我想要的,非常感谢。如果您愿意,请发布类似“这称为reusing a view xib”的答案,我会将其标记为已接受的答案。
-
@AlexIoja-Yang 哈哈,我的意思是把它作为正式答案发布,这样你就可以获得声望分了。
-
它一直将它作为自己的评论发布。很高兴有帮助