Установка фрейма UITableView не работает правильно - PullRequest
3 голосов
/ 02 апреля 2012

У меня есть контроллер представления, в котором есть 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];

}

Кто-нибудь знает, почему это происходит?При регистрации фрейма он говорит именно то, что я ввел, но это, очевидно, не тот фрейм, который помещается в представление.В качестве другого теста я рассмотрел те же самые размеры, которые ясно показали, что они находятся в разных местах.Очень странно, любая помощь приветствуется.

Спасибо

Ответы [ 2 ]

2 голосов
/ 02 апреля 2012

ваша

[self.view setFrame: frame];

(100,47) абсолютная координата

|                |
|                |
|   self.view    |
|                |
|                |

вы staticTable оставляете нулевые координаты.

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];

self.view
 |      [      |         ]
 |      [      |         ]
 |      [static|TableView]
 |      [      |         ]
 |      [      |         ]
1 голос
/ 02 апреля 2012

ширина myPopover равна 128, а высота равна 150

так, как можно добавить табличное представление с x cordinate с 200, это должно быть ниже 128, чтобы показать таблицу. кадр относится к вспомогательному виду, но не к общему виду экрана.

...