2012-05-20 34 views
0

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

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

,并在PartsNavController我写在viewDidLoad中的课程:

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 我该如何防止这一点,并得到我发送的价值?

enter image description here

我想从(MaktabatyTableViewController)至(PartsTableViewController)通过,而无需使用赛格瑞

+0

看起来你不恰当地使用子类化,当你需要子类化UINavigationController时,这是非常罕见的情况。我会为您的案例发布解决方案。 – DanSkeel

+0

你的当前类是否在其他一些Parent NavigationController中?如果是的话,为什么不直接将新的ViewController推送到该父级导航控制器?如果您的当前类不在NavigationController中,为何不嵌入它? – DanSkeel

+0

是的,我当前的类也是一个UITableViewController与UINavigationController连接 –

回答

5

更好的方式做你想做的是推动第二TableViewController现有的UINavigationController。最简单的方法是在StoryBoard中创建NavContr,然后在TableView中创建NavContr,并用segue将其与领先的视图控制器连接起来。而不是用如下方法:

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

enter image description here

+0

什么是DPViewController?你的意思是我的UINavigationController? –

+0

对不起,复制/粘贴错误 – DanSkeel

+0

感谢这张图片,但你误会了我,我会用图片来说明我的意思 –

0

我想从(MaktabatyTableViewController)传递给 (PartsTableViewController)不使用赛格瑞

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

  1. 直接沟通:人们经常会问如何在两个对象之间进行通信,并且它几乎总是将其中一个对象引用到另一个对象(有时反之亦然)。要向对象发送消息,您需要一个指向该对象的指针;如果你有指针,关于如何沟通并不是什么秘密。用这些术语思考它可以帮助您以不同的方式思考问题:而不是直接的“如何向该对象发送消息?”您可以改为关注这两个对象之间的关系。每个人是如何创建的?其中一个对象是另一个的父对象吗?有一些可以提供指针的公共父对象吗?如果应该相关的对象,如果根本?

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

从我能看到你的问题,我会建议使用通知。

+0

好的非常感谢你的回答 –