Objective c 创建从UITableVIewController扩展的自己的类

Objective c 创建从UITableVIewController扩展的自己的类,objective-c,ios,xcode,uitableview,Objective C,Ios,Xcode,Uitableview,我有自己的类,它是从UITableViewController扩展而来的。 在这一行之后 MyClass*obj=[[MyClass alloc]init] 我有 obj.view.frame.orign.y=20 通过导航控制器推送此自定义视图后,我检查ViewDidDisplay中的y坐标,它变为0。 真奇怪 为什么??是因为我的自定义表格视图位于高度为20的状态栏下方吗?还是其他原因。 如果它是因为状态栏,为什么我可以在(0,0)中创建UIButton并在状态栏下方创建它?您看到的行为是正

我有自己的类,它是从UITableViewController扩展而来的。
在这一行之后
MyClass*obj=[[MyClass alloc]init]
我有
obj.view.frame.orign.y=20

通过导航控制器推送此自定义视图后,我检查ViewDidDisplay中的y坐标,它变为0。
真奇怪

为什么??是因为我的自定义表格视图位于高度为20的状态栏下方吗?
还是其他原因。

如果它是因为状态栏,为什么我可以在(0,0)中创建UIButton并在状态栏下方创建它?

您看到的行为是正常的:
-首先创建视图控制器,它不附着到视图层次,默认情况下,它采用的坐标与根控制器相同,y=20,因为状态栏
-然后按下视图控制器,调整其大小以适应导航控制器,框架坐标是相对于父框架的坐标,即y=0是导航控制器的顶部,相当于主窗口中的y=20。pushViewController调整框架的大小,请参阅文档

视图将自动调整大小以适应导航栏之间的大小 和工具栏(如果存在),然后再显示


我只创建像MyClass*obj=[[MyClass alloc]init]这样的对象;然后NSLog框架的y坐标,得到20so?我不明白这个问题。按此顺序:1)按所做的操作创建对象2)将其推送到导航堆栈3)设置帧坐标4)使用NSLog语句检查。您似乎在将帧推到堆栈上之前设置了帧,pushViewController语句正在重新调整视图控制器的大小1)创建对象2)nslog y-有20 3)将其推4)nslog y-有0个问题-为什么在步骤2 y=20?我编辑了我的答案以提供完整的解释,让我知道这是否有意义。第一次得到的y=20与主窗口(带状态栏)有关。按下控制器后,框架坐标是导航控制器框架内的坐标,即该框架中的y=0对应于主窗口中的y=20