presentModalViewController Problem !

时光怂恿深爱的人放手 提交于 2019-12-08 04:35:40

问题


So,

I have a form (which is basically a UITableView), and once I finish the form, I click the 'Done' button which is on top of the screen.

After clicking, I need to add the data to another tableView (which is in another tableViewController). This table is also inside a Navigation Controller.

After I press the Done Button, I need the presentModalViewController to be the new TableView (with the new data) along with the Navigation Controller on top of the tableView.

So, to summarize:

  • The Done Button is in someTableViewController.
  • I need to add an object (lets just say I am adding a a name called "Dobby" for simplicity) into another tableView called dogTableViewController.
  • I reload the data , and present the screen which has dogTableViewController inside the dogNavigationController.
  • All the classes are referenced properly and included.

I am pasting the -(IBAction) when the Done Button is clicked.

-(IBAction) doneWithData: (UIBarButtonItem*) sender{


 UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
indicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;
[indicator sizeToFit];
indicator.autoresizingMask = (UIViewAutoresizingFlexibleLeftMargin |
                              UIViewAutoresizingFlexibleRightMargin |
                              UIViewAutoresizingFlexibleTopMargin |
                              UIViewAutoresizingFlexibleBottomMargin);

indicator.tag = 1;
[self.view addSubview:indicator];
[indicator setBackgroundColor:[UIColor clearColor]];
indicator.center = self.view.center;
indicator.hidden = FALSE;
[indicator startAnimating];

if (self.dogTableViewController == nil)
{
    DogTableViewController *temp = [[DogTableViewController alloc] init];
    self.dogTableViewController = temp;
    [temp release];
}

if (self.dogNavigationController == nil)
{
    DogNavigationController *temp = [[DogNavigationController alloc] init];
    self.dogNavigationController = temp;
    [temp release];
}

[self.dogTableViewController.dogArray addObject:@"Dobby"];
[self.dogTableViewController.tableView reloadData];

NSLog (@"%@", [self.dogTableViewController.dogArray objectAtIndex:0]); 
//Prints out "Null" //

[self presentModalViewController:dogNavigationController animated:YES];


[indicator release];

}

When I do all this and Click the Done button,

I get an empty Navigation Screen with NO TABLE in it. Plus I also had some buttons on the dogNavigationController screen. Nothings visible !!

My objective is to just transfer the screen to this new screen (which happens to be a home screen, and not the rootController). Do you think I should go with the modalViewController for this task ? Do you think I should use some other way to transfer data to another screen ?

p.s. I do not want to use PushViewController.


回答1:


I think you should do

[self.navigationController popToRootViewControllerAnimated:YES];

rather. To get the root view controller, you can do,

DogTableViewController * viewController = [self.navigationController.viewControllers objectAtIndex:0];
[viewController.dogArray addObject:aDog];

Original Answer

Shouldn't you be initializing a navigation controller with the root view controller?

DogNavigationController *temp = [[DogNavigationController alloc] initWithRootViewController:self.dogTableViewController];


来源:https://stackoverflow.com/questions/6281451/presentmodalviewcontroller-problem

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!