如何使用嵌入UIViewController内容器的静态单元委托UITableViewController?

时间:2016-03-30 02:44:56

标签: ios objective-c uitableview uiviewcontroller delegates

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

我已设置UITableViewDelegate, UITableViewDataSource之类的协议,我不知道如何获取tableViewController并委托给我的UIViewController。

以下是屏幕。

P.S。我试图制作侧导航栏。如果您需要查看任何代码,请通知我。

enter image description here

3 个答案:

答案 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