presentModalViewController问题!

时间:2011-06-08 15:37:57

标签: iphone objective-c uinavigationcontroller tableview presentmodalviewcontroller

所以,

我有一个表单(基本上是一个UITableView),一旦我完成表单,我点击屏幕顶部的“完成”按钮。

点击后,我需要将数据添加到另一个tableView(在另一个tableViewController中)。该表也位于导航控制器内。

按下完成按钮后,我需要将presentModalViewController作为新的TableView(带有新数据)以及tableView顶部的导航控制器。

所以,总结一下:

  • Done Button位于someTableViewController中。
  • 我需要添加一个对象(我只是说我为了简单而添加一个名为“Dobby”的名称)到另一个名为dogTableViewController的tableView中。
  • 我重新加载数据,并在dogNavigationController中显示dogTableViewController的屏幕。
  • 所有类都已正确引用并包含在内。

单击完成按钮时,我粘贴了 - (IBAction)。

-(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];

}

当我完成所有操作并点击完成按钮

我得到一个没有TABLE的空导航屏幕。另外我还在dogNavigationController屏幕上有一些按钮。没有看到!!

我的目标是将屏幕转移到这个新屏幕(恰好是主屏幕,而不是rootController)。你认为我应该使用modalViewController执行此任务吗?你认为我应该用其他方式将数据传输到另一个屏幕吗?

P.S。我不想使用PushViewController。

1 个答案:

答案 0 :(得分:2)

我认为你应该这样做

[self.navigationController popToRootViewControllerAnimated:YES];

相当。要获得根视图控制器,您可以这样做,

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

原始答案

您是否应该使用根视图控制器初始化导航控制器?

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