我的故事板中有一个UIViewController。在这个UIViewController中,我有一个嵌入了tableViewController的容器。这个tableViewController是一个静态表。如何在UIViewController中使用这个tableViewController?
我已设置UITableViewDelegate, UITableViewDataSource
之类的协议,我不知道如何获取tableViewController并委托给我的UIViewController。
以下是屏幕。
P.S。我试图制作侧导航栏。如果您需要查看任何代码,请通知我。
答案 0 :(得分:1)
这是我的意见:为你的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控制器的委托
答案 1 :(得分:0)
结果我必须在embed tableViewController中设置类,并将[self addChildViewController: myTableViewController]
放在UIViewController类中。我可以在UITableViewController类中实现控制它。
答案 2 :(得分:0)
您可以使用segue访问tableViewController。只需实现- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
,它将在viewController的viewDidLoad之前调用。请参阅此答案:Access Container View Controller from Parent iOS