0

我正在尝试通过 UINavigationController 将 int 变量传递给 UITableView(我使用的是 xcode 4.3)所以我创建了 2 个类(PartsTableViewController 是“UITableViewController”,PartsNavController 是“UINavigationController”),我想从我的当前传递变量类到 PartsTableViewController ,然后使用包含标题栏的导航控制器打开该表,因此我在当前类中编写了以下代码:

PartsNavController *partsNav = [self.storyboard instantiateViewControllerWithIdentifier:@"partsNav"];  
partsNav.groupId = myGroupp.bg_id;
[self presentModalViewController:partsNav animated:YES];

在我在 viewDidLoad 中编写的 PartsNavController 类中:

PartsTableViewController *parts = [self.storyboard instantiateViewControllerWithIdentifier:@"Parts"];
parts.groupId = groupId;
[parts.tableView reloadData];

在 PartsTableViewController 我在 viewDidLoad 中写道:

NSLog(@"This is group: %d", groupId);

但是在运行时,它会生成 2 次输出,

This is group:1
This is group:0

第一次是我发送的值,第二次是 0 ,我只想要我发送的值,而不是 0 我怎样才能防止这种情况并获得我发送的值????

在此处输入图像描述

我想在不使用 segue 的情况下从 (MaktabatyTableViewController) 传递到 (PartsTableViewController)

4

2 回答 2

5

做你想做的更好的方法是在现有的 UINavigationController 中推送第二个 TableViewController。最简单的方法是在 StoryBoard 中创建 NavContr,而不是在 TableViews 中创建,并将其单元格与带有 segue 的前导视图控制器连接起来。而不是使用下面的方法:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    UIViewController *destViewController = segue.destinationViewController;
    destViewController.integerValue = value;
}

在此处输入图像描述

于 2012-05-20T11:41:55.313 回答
0

我想在不使用 segue 的情况下从 (MaktabatyTableViewController) 传递到 (PartsTableViewController)

您可以选择(至少)两种策略:

  1. 直接通信:人们经常问如何在两个对象之间进行通信,它几乎总是归结为一个对象引用另一个对象(有时反之亦然)。要向对象发送消息,您需要一个指向该对象的指针;如果你有指针,那么如何沟通就没有什么神秘的了。用这些术语来思考它可以帮助您以不同的方式思考这个问题:而不是直接的“我如何向该对象发送消息?” 相反,您可以专注于两个对象之间的关系。每一个是如何创建的?其中一个对象是另一个对象的父对象吗?是否有一些可以提供指针的通用父对象?如果有的话,这些对象应该如何关联?

  2. 间接通信:有时不是让两个对象直接通信,而是通过一些中间对象路由通信更合适。例如,您MaktabatyTableViewController可能会向其委托人发送一条消息,然后委托人可以将信息传递给PartsTableViewController. 一个更通用的解决方案是使用通知:MaktabatyTableViewController可以发布一个PartsTableViewController监听的通知。这种情况下的中间对象是通知中心。无论哪种方式,间接通信的好处是两个对象都不必知道另一个对象。这减少了两个类之间的耦合,并使它们更加灵活和可重用。

从我在您的问题中可以看到,我建议使用通知。

于 2012-05-20T12:47:27.703 回答