繁体   English   中英

通过UINavigationController将int变量传递给UITableView

[英]pass int variable to UITableView Through UINavigationController

我试图通过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];

在我在viewDidLoad中编写的PartsTableViewController中:

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

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

This is group:1
This is group:0

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

在此处输入图片说明

我想不使用segue从(MaktabatyTableViewController)传递到(PartsTableViewController)

进行所需操作的更好方法是在现有UINavigationController中推送第二个TableViewController。 最简单的方法是在StoryBoard中创建NavContr,而不是在TableViews中创建,并使用segue将其单元与领先的视图控制器连接。 并且比下面的使用方法:

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

在此处输入图片说明

我想不使用segue从(MaktabatyTableViewController)传递到(PartsTableViewController)

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM