【问题标题】:Swapping UITableViews in a single UIViewController在单个 UIViewController 中交换 UITableViews
【发布时间】:2015-05-28 00:39:10
【问题描述】:

我有 1 个视图控制器,根据单击的按钮,底部的视图在 4 个不同的表视图之间交换。这些表视图在故事板中各自独立的 UITableViewController 中。我像这样添加 tableViews:

Tracks_TVC *tracksTVC = [[Tracks_TVC alloc] init];
tracksTVC.view.frame = _postView.frame;
tracksTVC.view.tag = kTagPostView;
[self.view addSubview:tracksTVC.view];

我在运行代码时收到此错误消息:

NSInternalInconsistencyException',原因:'UITableView 数据源 必须从 tableView:cellForRowAtIndexPath 返回一个单元格:

我已经使用所有必需的方法在单独的 UITableViewController 中正确(我相信是这样)实现了数据源,所以我对为什么会收到此错误感到困惑。我唯一的想法是添加的表格视图没有使用它自己的 UITableViewController 中的方法..?非常感谢您对此事的任何帮助!

【问题讨论】:

  • 尝试像tracksTVC.tableView.dataSource = tracksTVC; tracksTVC.tableView.delegate = tracksTVC; 那样强制完全分配数据源和委托。愿这有帮助
  • 如果你在故事板中有它们,那么你需要从故事板中实例化它们,而不仅仅是类。因为我假设,您在情节提要和单元格中设置了它的委托和数据源。您尝试在代码中创建 tableview 的方式,您需要在 init 中设置数据源并委托和注册单元格。
  • 让一张桌子工作,然后一张一张地添加其他的。

标签: ios objective-c uitableview uiviewcontroller


【解决方案1】:

您应该创建 TableViewController 的属性,例如 -

@property(nonatomic, strong) Tracks_TVC *tracksTVC;

现在在 viewDidLoad 中初始化相同 -

-(void)viewDidLoad
{
    [super viewDidLoad];

   self.tracksTVC = [[Tracks_TVC alloc] init];

   self.tracksTVC.view.frame = _postView.frame;

   self.tracksTVC.view.tag = kTagPostView;

   [self.view addSubview:self.tracksTVC.view];

}

注意:还要确保返回数据源中的单元格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多