2014-05-20 2 views
2

Я добавляю subview к основному виду, но затем я не могу удалить его из этого представления.Удалить subview из UIViewController

NextViewController *nextView = [[NextViewController alloc] init]; 

nextView.transitioningDelegate = self; 
nextView.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
[self.presentedViewController.view addSubview:nextView.view]; 
nextView.view.frame = CGRectMake(724, 80, 300, 150); 

UIButton *stayButton = [[UIButton alloc] initWithFrame:CGRectMake(101, 94, 90, 49)]; 
[stayButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 
[stayButton setTitle:@"Detener" forState:UIControlStateNormal]; 
[stayButton addTarget:self 
      action:@selector(waitForNextView) 
forControlEvents:UIControlEventTouchUpInside]; 
[nextView.view addSubview:stayButton]; 
stayButton.titleLabel.font = [UIFont systemFontOfSize:25]; 
[stayButton setTitleColor:[UIColor colorWithRed:(255/255.0) green:(255/255.0) blue:(255/255.0) alpha:1] forState:UIControlStateNormal]; 

здесь я добавляю кнопку зрения, а затем, когда кнопка нажата она goes`-

(void)waitForNextView{ 
    transition = NO; 
    NextViewController *nextView = [[NextViewController alloc] init]; 
    SectionViewController *sectionView = [[SectionViewController alloc]init]; 
    [self.locationManager stopRangingBeaconsInRegion:self.beaconRegion]; 
    actualSection = 0; 
    [NSTimer scheduledTimerWithTimeInterval:10.0 target:self selector:@selector(dismissView2) userInfo:nil repeats:NO]; 
} 

Я попытался с:

[nextView.view removeFromSuperView];

[nextView.presentedViewController removeFromParentViewController];

Но я не знаю, что еще я могу сделать: S

Если вам нужна дополнительная информация, nextView - это UIViewController размером 300x100. Я хочу представить его, а затем удалить его, когда я нажму кнопку, вот и все.

Было бы здорово, если бы кто-то мог мне помочь.

Благодаря

+0

Post метод dissmissView2 где вы пытаются вызвать [nextView.view removeFromSuperView] ; – Yan

+1

Какой вид вы хотите удалить? Это кнопка или вы хотите удалить NextView? Если NextView является подклассом UIViewController, для его увольнения используйте 'rejectViewControllerAnimated: completion: – KerrM

ответ

2

Вы создавая различную ссылку, а затем вы пытаетесь удалить ее из своего супервизора, а не добавляться вообще. Я попытаюсь объяснить: 1. Когда вы добавляете nextView.view к self.view вы создали экземпляр, как этот

NextViewController *nextView = [[NextViewController alloc] init]; 

2. Когда вы пытаетесь удалить его, вместо ссылки на экземпляр над вами «вновь создать совершенно новый один раз в методе waitForNextView как это снова

NextViewController *nextView = [[NextViewController alloc] init]; 

, а затем вы пытаетесь удалить его. Обратите внимание, что последний экземпляр nextView еще не добавлен, и именно по этой причине ваш код не работает.

Для того, чтобы работать, вы должны обратиться к первой ссылке, которую вы добавили в self.view.Пожалуйста, измените код, как показано ниже

В вашей ViewController.m

@interface ViewController() 
{ 
NextViewController *nextView; 
} 

Добавляя viewController

nextView = [[NextViewController alloc] init]; 

nextView.transitioningDelegate = self; 
nextView.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
[self.presentedViewController.view addSubview:nextView.view]; 
nextView.view.frame = CGRectMake(724, 80, 300, 150); 

UIButton *stayButton = [[UIButton alloc] initWithFrame:CGRectMake(101, 94, 90, 49)]; 
[stayButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 
[stayButton setTitle:@"Detener" forState:UIControlStateNormal]; 
[stayButton addTarget:self 
      action:@selector(waitForNextView) 
forControlEvents:UIControlEventTouchUpInside]; 
[nextView.view addSubview:stayButton]; 
stayButton.titleLabel.font = [UIFont systemFontOfSize:25]; 
[stayButton setTitleColor:[UIColor colorWithRed:(255/255.0) green:(255/255.0) blue:(255/255.0) alpha:1] forState:UIControlStateNormal]; 

И, наконец, в вашем методе IBAction

-(void)waitForNextView{ 
    transition = NO; 
    [self.locationManager stopRangingBeaconsInRegion:self.beaconRegion]; 
    actualSection = 0; 
    [nextView removeFromSuperview]; 
} 
+0

, но я изменил' [nextView removeFromSuperview]; ' для' [nextView.view removeFromSuperView]; Большое спасибо Panayot, я спас меня: D – Norolim

+0

Без проблем мужчина. Счастлив, что я могу помочь – Pancho

0

Проблема здесь состоит в том, что вы добавляете кнопку как подвид к мнению NEXTVIEW, поэтому удаление мнение NEXTVIEW не будет работать.

Если вы добавите тег к своей кнопке, вы можете получить подзаголовок с помощью тега. Например. Когда вы определяете кнопку:

[stayButton setTag:1]; 

Тогда в методе waitForNextView, вы можете получить контроль как это:

UIButton *stayButton = (UIButton*)[nextView.view viewWithTag:1]; 
[stayButton removeFromSuperView]; 
0

использовать этот код в Methode dismissView2

for (UIView *subview in view.subviews){ 
    [subview removeFromSuperview]; 
} 
Смежные вопросы