UIViewController представляет еще один UIViewController - PullRequest
2 голосов
/ 07 октября 2011

У меня есть UIViewController 1 на нем UIButton (добавлен как подпредставление), после того, как я нажал кнопку (см. Рис. 1 ниже), добавив еще один UIViewController 2 с анимацией снизу вверх после некоторого действия:

[[[UIApplication sharedApplication] keyWindow] addSubview:self.view];

И это перекрывает UIButton, как я могу добавить это подпредставление, которое не охватывает UIButton (см. Рис.2 ниже)

pic.1:

enter image description here

рис. 2:

enter image description here

Ответы [ 2 ]

2 голосов
/ 07 октября 2011

Вы не показали код анимации, но я предполагаю, что вы добавили подпредставление за кадром, а затем изменили его кадр (анимированный), чтобы отобразить его.

Добавьте новое подпредставление, используя вместо этого insertSubview:belowSubview:, передав вашу кнопку в качестве второго аргумента.Таким образом, кнопка будет перекрывать новый вид, а не наоборот.addSubview: всегда ставит новый вид поверх любого другого.

РЕДАКТИРОВАТЬ

Из ваших комментариев кажется, что вы добавляете второй контроллер вида на экран, используя presentModalViewController:, поэтому вышеуказанный метод не будет работать.Насколько я знаю, невозможно сохранить элемент от исходного контроллера представления поверх представления нового контроллера представления, если вы представляете его таким образом.

Возможно, вам придется создать новый UIWindow и установить для windowLevel значение UIWindowLevelAlert, чтобы удерживать вашу кнопку.Это будет держать его поверх любого из представлений внизу.Добавьте это окно как подпредставление к главному окну.

1 голос
/ 07 октября 2011
{
SecondViewController *objComing=[[SecondViewController alloc] init];
[self.view addSubview:objComing.view];

objComing.view.backgroundColor=[UIColor blueColor];

objComing.view.frame=CGRectMake(0,420, 320, 0);
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];

[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
objComing.view.frame=CGRectMake(0,0, 320, 420);

[UIView commitAnimations];

}

Вставьте этот код в действие кнопки и замените secondViewController на ViewController.

...