当前位置: 首页 > 知识库问答 >
问题:

我如何委托一个UITableViewController与静态单元格嵌入一个容器内UIViewController?

微生自怡
2023-03-14

我的故事板中有一个UIViewController。在这个UIViewController中,我有一个嵌入tableViewController的容器。此tableViewController是一个静态表。如何在UIViewController中使用此tableViewController?

我已经设置了类似于UITableViewDelegate、UITableViewDataSource的协议,我不知道如何获得tableViewController并将其委托给我的UIViewController。

下面是屏幕。

P. S.我想做一个侧面导航栏。如果您需要查看任何代码,请通知我。

共有3个答案

夹谷志
2023-03-14

您可以使用segue访问tableViewController。只需实现-(无效)preareForSegue:(UIStoryboardSegue*)segue sender:(id)sender,它将在viewController的viewdiLoad之前调用。请参阅此答案:从父iOS访问容器视图控制器

姬凡
2023-03-14

事实证明,我必须在嵌入式tableViewController中设置类,并将[self addChildViewController:myTableViewController]放入UIViewController类。我可以在UITableViewController类中实现来控制它。

段铭晨
2023-03-14

这是我的意见:创建一个委托为您的tableViewController喜欢

@protocol SideTableViewContollerDelegate <NSObject>

- (void)didClickCellOfIndexPath:(NSIndexPath *)indexPath;

@end

@interface SideTableViewController

@property (weak, nonatomic) id<SideTableViewContollerDelegate> delegate;

@end

在UIViewController中,将控制器设置为tableViewController的委托

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    if ([segue.identifier isEqualToString:@"go table view"]) {
       SideTableViewController *stvc = (SideTableViewController *)segue.destinationViewController;
       stvc.delegate = self;
   }
}

在tableView的委托函数“didSelectRowAtIndexPath”中,执行以下操作:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
   [self.delegate didClickCellOfIndexPath:indexPath];
   [tableView deselectRowAtIndexPath:indexPath animated:YES];
}

剩下的就是在uiview控制器中实现tableView控制器的委托

 类似资料: