【问题标题】:Find what Action is called by a Button in interface builder in debug mode在调试模式下查找界面生成器中的按钮调用的操作
【发布时间】:2018-04-26 09:45:55
【问题描述】:

我正在调试一个不是我创建且没有文档的大型项目。 我正在使用 Debug View Hierarchy 来停止对需要修改的视图的执行,只需要找出哪个视图控制器负责该视图以及接口调用了哪些操作。

我该怎么做?

视图层次结构仅显示通用类,而不显示项目中的特定类。 例如,我可以打印按钮的描述,但这只会给我内存地址和框架。另外,打印 superview 只会给我另一个内存地址和框架。

提前谢谢你!

【问题讨论】:

    标签: ios xcode interface-builder


    【解决方案1】:

    我一直在尝试控制台和其他一些帖子,并找到了解决方案:

    首先,通过右键单击它来打印按钮描述(应该适用于任何视图)

        <UIButton: 0x7feefe5e20c0; frame = (17 266.5; 105 30); clipsToBounds = YES; opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x608000236520>>
    

    其次,使用控制台“0x7feefe5e20c0”中的按钮地址打印按钮的所有目标

    po [0x7feefe5e20c0 allTargets]
    <ViewControllerClass: 0x7feefe5de7b0>
    

    现在“ViewControllerClass”已经更接近我的需要了,它是拥有包含我的按钮的视图的视图控制器

    第三次打印按钮的所有控制事件

    (lldb) po [0x7feefe5e20c0 allControlEvents]
    0x0000000000000040
    

    最后为控制事件的目标打印按钮操作

    (lldb) po [0x7feefe5e20c0 actionsForTarget:0x7feefe5de7b0 forControlEvent:0x0000000000000040]
    <__NSArrayM 0x7fef00078040>(
        actionCalledByBytton:
    )
    

    这给了我“actionCalledByBytton”由“ViewControllerClass”上的按钮调用的操作

    多多!希望这对某人有所帮助。

    【讨论】:

      【解决方案2】:

      右键单击界面生成器中的按钮。这些操作应列在Send Events 下。

      还可以使用addTarget:action:forControlEvents: 以编程方式添加操作

      【讨论】:

      • Xcode 处于调试视图层次模式,而不是编辑模式,右键单击只允许我打印视图描述和更多视图选项。
      • 你不能用Continue program execution按钮退出调试层次模式吗?底部面板左数第三个。
      【解决方案3】:

      如果您的按钮中有文本,您可以在 Find Navigator 中搜索按钮的文本并进行一些预测,如果您在按钮上有图像,您可以在 assets 中找到图像名称。通过这两个您可以最小化搜索。 如果您发现任何包含静态文本的标签,请搜索该文本!也许这对你有帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-01
        • 1970-01-01
        • 2013-07-29
        • 2020-06-29
        相关资源
        最近更新 更多