Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 设置UITableView';s框架工作不正常_Iphone_Objective C_Ios_Uitableview_Frame - Fatal编程技术网

Iphone 设置UITableView';s框架工作不正常

Iphone 设置UITableView';s框架工作不正常,iphone,objective-c,ios,uitableview,frame,Iphone,Objective C,Ios,Uitableview,Frame,我有一个视图控制器,其中有一个tableView。当我设置它的tableView的框架时,它会出现在屏幕上与我给它的框架不同的位置。例如,给它一个X坐标为200,宽度为128,这会使整个屏幕消失 下面是我实例化视图控制器的地方: myPopover = [[PopupVC alloc] initWithFrame:CGRectMake(100, 47, 128, 150)]; - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBu

我有一个视图控制器,其中有一个tableView。当我设置它的tableView的框架时,它会出现在屏幕上与我给它的框架不同的位置。例如,给它一个X坐标为200,宽度为128,这会使整个屏幕消失

下面是我实例化视图控制器的地方:

myPopover = [[PopupVC alloc] initWithFrame:CGRectMake(100, 47, 128, 150)];
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
    }
    return self;
}

- (id)initWithFrame:(CGRect)_frame
{
    self = [self initWithNibName:nil bundle:nil];
    if (self)
    {
        frame = _frame;
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self.view setFrame:frame];
    staticTable = [[UITableView alloc] initWithFrame:frame style:UITableViewStylePlain];
    [self.view addSubview:staticTable];
以及视图控制器的初始代码:

myPopover = [[PopupVC alloc] initWithFrame:CGRectMake(100, 47, 128, 150)];
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
    }
    return self;
}

- (id)initWithFrame:(CGRect)_frame
{
    self = [self initWithNibName:nil bundle:nil];
    if (self)
    {
        frame = _frame;
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self.view setFrame:frame];
    staticTable = [[UITableView alloc] initWithFrame:frame style:UITableViewStylePlain];
    [self.view addSubview:staticTable];
}

有人知道为什么会这样吗?当记录帧时,它准确地显示了我输入的内容,但这显然不是放在视图上的帧。作为另一项测试,我观察了完全相同的尺寸,清楚地表明它们在不同的地方。非常奇怪,感谢您的帮助


谢谢,myPopover的宽度是128,高度是150

因此,如何添加带有200的x cordinate的表视图,它必须低于128才能显示表。帧是关于子视图的坐标,而不是屏幕的总视图。

[self.view setFrame:frame]

(100,47)绝对坐标

|                |
|                |
|   self.view    |
|                |
|                |
你可以留下零个坐标

staticTable = [[UITableView alloc] initWithFrame:CGRectMake(0,0,128,150) style:UITableViewStylePlain];
因为

(0,0)self.view的相对坐标

(100,47)superView的绝对坐标

self.view
    |[                ]|
    |[                ]|
    |[staticTableView ]|
    |[                ]|
    |[                ]|
如果设置帧,则帧等于下图

staticTable = [[UITableView alloc] initWithFrame:frame style:UITableViewStylePlain];


我只是想,这可能与我在没有笔尖的情况下使用viewdidload而不是load view有关吗?谢谢,这是一个很好的提醒,提醒我一些我忘记的简单事情。