Pass value to parent controller when dismiss the controller

前端 未结 3 642
广开言路
广开言路 2021-01-06 07:12

I want to send data to parentviewcontroller but the following code crashes. Give me the solution

Post *vc;
vc.abc =@\"Comment Conttroller\";
[self.parentView         


        
相关标签:
3条回答
  • 2021-01-06 07:48

    vc doesn't seem to be initialized.

    You can probably do this,

    vc = (Post *)self.parentViewController;
    vc.abc = @"Comment Conttroller";
    [vc dismissModalViewControllerAnimated:YES];
    

    Since the view controller you want to affect is the parentViewController, you should be able to cast and set the abc property.

    0 讨论(0)
  • 2021-01-06 08:04

    Take this in .h file in ParentViewController

    NSString *strABC;
    

    Make below function in ParentViewController

    -(void)setString:(NSString *)strEntered{
        strABC=strEntered;
    }
    

    Now In Post view controller do like this:

    ParentViewController *objSecond = 
      [[ParentViewController] initwithNibName:@"parentView.xib" bundle:nil];
    
    [objSecond setString:@"Comment Controller"];
    [self.navigationController pushViewController:objSecond animated:YES];
    [objSecond release];
    

    Now, In secondViewController viewWillAppear method write this.

    -(void)viewWillAppear:(BOOL)animated{
          lblUserInput.text = strABC;
    }
    

    Please check spelling mistakes as I've hand written this. Hope this help.

    If you are not using UINavigationContoller then you can do something like this.

    SecondViewControler *objSecond = 
      [[SecondViewController] initwithNibName:@"secondview.xib" bundle:nil];
    [objSecond setUserInput:txtUserInput.text];
    [objSecond viewWillAppear:YES];
    [self.view addSubview:objSecond];
    [objSecond release];
    
    0 讨论(0)
  • 2021-01-06 08:06

    Put this in your parent controller in viewDidLoad

    // get register to fetch notification  
    [[NSNotificationCenter defaultCenter] addObserver:self
                                          selector:@selector(yourNotificationHandler:)
                                          name:@"MODELVIEW DISMISS" object:nil];
    // --> Now create method in parent class as;
    // Now create yourNotificationHandler: like this in parent class
    -(void)yourNotificationHandler:(NSNotification *)notice{
        NSString *str = [notice object];
    }
    

    Put following to your child class where

    -(void)dissmissModelView{
    
        [self dismissModalViewControllerAnimated:YES];
        NSLog(@"DismissModalviewController");
    
        //raise notification about dismiss 
        [[NSNotificationCenter defaultCenter] 
              postNotificationName:@"MODELVIEW DISMISS" 
                            object:@"Whatever you want to send to parent class"];  
    }
    

    as soon as model view get dismiss yourNotificationHandler get executed and whatever you pass as an objet will get fetch in your parent class. Please ask if still need some clarification.

    0 讨论(0)
提交回复
热议问题