ios在导航控制器之间传递数据

时间:2014-03-27 21:48:08

标签: ios objective-c ios7

我的应用程序有点问题,我在下面有这些视图控制器:

enter image description here

我的位置视图控制器有一个位置数组,我在菜单表视图控制器中有一个位置数组,我需要将数组从位置传递到菜单表,但我不知道怎么样,有人能帮帮我吗?我在下面尝试过这种编码:

-(void)pushMenuTableView
{

UIStoryboard *storyboard = self.storyboard;
UINavigationController *menuTableController = (UINavigationController *)[storyboard instantiateViewControllerWithIdentifier:@"MenuTableViewController"];

MenuTableViewController *menuController = (MenuTableViewController *) menuTableController.topViewController;

[self.navigationController pushViewController:menuTableController animated:YES];

}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
MenuTableViewController *mvc = [[MenuTableViewController alloc]init];
NSIndexPath *path = [self.tableView indexPathForSelectedRow];
Location *selectedLocation = [_locations objectAtIndex:[path row]];
[mvc setLocation:selectedLocation];
[self pushMenuTableView];

}

2 个答案:

答案 0 :(得分:2)

您正在使用两个不同的MenuTableViewController个对象。您使用alloc / init创建并使用导航控制器然后推送的位置和另一个。您需要将数据传递给您要显示的控制器,而不是暂时显示的控制器。

如何仅使用一个导航控制器并使用segues移动视图控制器?

答案 1 :(得分:1)

您可以尝试这样的事情:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UIStoryboard *storyboard = self.storyboard;
    MenuTableViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"MenuTableViewController"];

    Location *selectedLocation = [_locations objectAtIndex:indexPath.row];

    vc.location = selectedLocation;

    UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:vc];

    [self presentViewController:nc animated:YES completion:nil];
}