Добавление подпредставления без XIB - PullRequest
1 голос
/ 17 февраля 2011

Это может показаться до боли простым, но я только начинаю, так что терпите меня ...

У меня есть основной вид с панелью инструментов.Когда пользователь нажимает кнопку на панели инструментов, я бы хотел, чтобы в верхней части экрана появилось небольшое приглашение.Я добавил UIView в существующий UIView и установил его скрытым.Я подключил это к ивару под названием «searchView» в моем контроллере представления и попробовал следующее:

searchView.hidden = NO;

Когда это не сработало, я попытался добавить ...

[self.view addSubview:self.searchView];

... который тоже не работал.

Нужно ли как-то устанавливать индекс, чтобы он был выше основного вида?

Является ли этот подход совершенно неправильным?

1 Ответ

1 голос
/ 17 февраля 2011

Если вы создали UIView из конструктора интерфейса, не забудьте использовать addSubview, потому что конструктор интерфейса делает это автоматически.

Чтобы сделать это в графическом режиме (IB), выполните следующие действия:

Определение IBOutlet в вашем файле "h" должно выглядеть примерно так:

IBOutlet UIView * myHiddenView;

Затем в IB подключите IBOutlet, который вы определили в файле h, к UIView, который вы графически создали в IBи передайте скрытое свойство этому UIView (флажок).

Затем в вашем методе нажатия кнопки сделайте это:

myHiddenView.hidden = NO;

Если вы предпочитаете сделать это программно, скопируйте этот пример кода:

определить в интерфейсе файла .h

UIView *myHiddenView;

после интерфейса в файле .h:

-(void)displayView:(id)sender;

, затем в файле .m:

-(void)viewDidLoad{
    myHiddenView = [[UIView alloc] initWithFrame: CGRectMake (x, y, width, height)];
    myHiddenView.hidden = YES;
    [self.view addSubview: myHiddenView]

    UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(x, y, width, height)];
    [button setTitle:@"button" forState:(UIControlState)normal];
    [button addTarget: self action: @selector(displayView:) forControlEvents: UIControlEventTouchUpInside];
    [self.view addSubview:button];
}

-(void)displayView:(id)sender{
    myHiddenView.hidden = NO;
}
...