在调试模式下查找界面生成器中的按钮调用的操作
Find what Action is called by a Button in interface builder in debug mode
我正在调试一个并非我创建且没有文档的大型项目。
我正在使用 Debug View Hierarchy 来停止对需要修改的视图的执行,只需要找出哪个视图控制器负责该视图以及接口调用了哪些操作。
我该怎么做?
视图层次结构仅显示通用 类,而不显示项目中的特定 类。
例如,我可以打印一个按钮的描述,但这只会给我内存地址和框架。另外,打印 superview 只给了我另一个内存地址和帧。
提前致谢!
右键单击界面生成器中的按钮。这些操作应列在 Send Events
.
下
也可以使用 addTarget:action:forControlEvents:
以编程方式添加操作
如果您的按钮中有文本,您可以在“查找导航器”中搜索按钮的文本并进行一些预测,如果按钮上有图像,您可以在 assets.By 中找到图像名称您可以最小化搜索。
如果您发现任何包含静态文本的标签,请去搜索文本!也许这对你有帮助!
我一直在尝试控制台和其他一些帖子,并找到了解决方案:
首先,通过右键单击它来打印按钮说明(适用于任何视图)
<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"
上的按钮调用的操作
太棒了!希望这对某人有所帮助。
我正在调试一个并非我创建且没有文档的大型项目。 我正在使用 Debug View Hierarchy 来停止对需要修改的视图的执行,只需要找出哪个视图控制器负责该视图以及接口调用了哪些操作。
我该怎么做?
视图层次结构仅显示通用 类,而不显示项目中的特定 类。 例如,我可以打印一个按钮的描述,但这只会给我内存地址和框架。另外,打印 superview 只给了我另一个内存地址和帧。
提前致谢!
右键单击界面生成器中的按钮。这些操作应列在 Send Events
.
也可以使用 addTarget:action:forControlEvents:
如果您的按钮中有文本,您可以在“查找导航器”中搜索按钮的文本并进行一些预测,如果按钮上有图像,您可以在 assets.By 中找到图像名称您可以最小化搜索。 如果您发现任何包含静态文本的标签,请去搜索文本!也许这对你有帮助!
我一直在尝试控制台和其他一些帖子,并找到了解决方案:
首先,通过右键单击它来打印按钮说明(适用于任何视图)
<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"
上的按钮调用的操作太棒了!希望这对某人有所帮助。