Tableview到另一个viewcontroller

时间:2015-10-09 11:15:00

标签: ios objective-c

我有一个名为“firstViewcontroller”的控制器,其中我有UITableView,名为“discoveredInstanceTableView”。我想将UITableView加载到名为“secondViewcontroller”的另一个UIViewController

我使用了以下代码,但它无法正常工作,它说找不到属性“discoveredInstanceTableView”...有人请帮助我:

在firstViewcontroller中:

  IBOutlet UITableView *discoveredInstanceTableView;

在Secondviewcontroller中:

 firstViewcontroller *vc1 = [[firstViewcontroller alloc]initWithNibName:@"firstViewcontroller" bundle:nil];

    [self addChildViewController:vc1];
    [self.myTableview addSubview:vc1.discoveredInstanceTableView];

2 个答案:

答案 0 :(得分:0)

在viewcontroller2中声明

@property (nonatomic, strong) UITableView *table;

在viewcontroller1中创建表

tableView=[[UITableView alloc]initWithFrame:CGRectMake(10, 10, 250, 300) style:UITableViewStylePlain];
[self.view addSubview:tableView];
tableView.backgroundColor=[UIColor greenColor];

在调用viewcontroller2时将表传递给viewcontroller2

  ViewController2 *v2=[[ViewController2 alloc]init];
  v2.table=tableView;
  UINavigationController *navigation=[[UINavigationController alloc]initWithRootViewController:v2];
  [self presentViewController:navigation animated:YES completion:nil];
viewcontroller2中的

使用全局变量

访问表
[self.view addSubview:self.table];

答案 1 :(得分:0)

只有当你好奇地知道为什么上面的东西不起作用时,你问的是有效的

您正在做一些不允许的事情,这不能按照文档来完成。 但是,如果我们忘记了正确的错误方法,您可能会在表视图本身上添加一个表视图作为子视图,我确信您将表视图传递给可能未分配的表视图。

首先想想UITableView是如何工作的?它只是一个ScrollableView,它在其单元格上显示内容。

最终会建议您阅读TableView

编辑:来自上述评论

  

重要提示:您不应该嵌入UIWebView或UITableView对象   UIScrollView对象。如果这样做,可能会导致意外行为   因为两个对象的触摸事件可能混淆错误   处理。»由于UITableView是一个UIScrollView,这也适用于此。

在SecondViewController中显示TableView的可能替代方法

  • 使用@Rajath Kornaya的答案并且在我看来这是不正确的方法,因为每当你需要像单元格点击一样的回调动作时,你想要显示警告(或其他东西),你就无法获得委托内部的回复SecondViewController

但是还有很多其他正确的方法,你应该跟进。

  • 以编程方式或通过XIB / Storyboard单独创建TableView

  • 添加委托和数据源(当有趣的事情发生时响应的方法,例如Cell将填充称为cellForRowAtIndexPath)到当前的SecondViewController

  • 定义所有必需的数据源方法并编写正确的代码。

  • 如果您需要在单元格点击上执行某些操作,请添加特定的委托方法。

但是如果你想重用FirstViewController类TableView,只需创建一个CustomView并在其中添加TableView,只需将该视图添加到每个视图控制器类。

我希望它可以帮到你!!!

相关问题