您是我在我父项ViewController
项目中的IOS初学者我添加了One ContentView。
在这里,我想在我的父ViewControllers
ViewController
上加载两个子ContentView
(它们是表列表和表列表详细信息页面)。
根据我的代码,我可以在ChildViewController
parentViewController
上加载表格列表ContentView
,如下图所示。
但是当我点击表格列行时,我想在ChildViewContoller
parentViewController
上加载明细ContentView
。
我该怎么做?
请帮帮我。
#import "ParentViewController.h"
#import "ChildViewController.h"
@interface ViewController ()
@end
@implementation ParentViewController
@synthesize contentView;
- (void)viewDidLoad
{
[super viewDidLoad];
ChildViewController *tableViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"ChildViewController"];
tableViewController.view.frame = self.contentView.bounds;
[tableViewController willMoveToParentViewController:self];
[self.contentView addSubview:tableViewController.view];
[self addChildViewController:tableViewController];
[tableViewController didMoveToParentViewController:self];
}
@end
#import "ChildViewController.h"
@interface ChildViewController ()
@end
@implementation ChildViewController
- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.items = @[@"One",@"Two",@"Three"];
}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [self.items count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
// Configure the cell...
cell.textLabel.text = self.items[indexPath.row];
return cell;
}
#pragma mark - Table view delegate
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
DetailViewController*VC = [self.storyboard instantiateViewControllerWithIdentifier:@"DetailViewController"];
[self.navigationController pushViewController:VC animated:YES];
}
@end
答案 0 :(得分:0)
试试这个:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
DetailViewController*VC = [DetailViewController instantiateViewControllerWithIdentifier:@"DetailViewController"];
[self.view addSubview:VC.view];
}
答案 1 :(得分:0)
我不确定我是否正确解决了您的问题,我认为您应该尝试编写一个委托方法,该方法将返回父视图控制器在其内容视图中显示所有内容所需的数据。
通过这种方式,您可以真正推送任何您想要的内容,视图,数据等。
关于如何设置,请检查: How do I set up a simple delegate to communicate between two view controllers?
答案 2 :(得分:0)
是的,确定你可以做到。
我只是像这样修改你的tableView:didSelectRowAtIndexPath
功能
- (void)tableView:(UITableView )tableView didSelectRowAtIndexPath:(NSIndexPath )indexPath
{
DetailViewController*VC = [self.storyboard instantiateViewControllerWithIdentifier:@"DetailViewController"];
[self.parentViewController.view addSubView:VC.view];
[self.parentViewController addChildViewController:VC];
}
另外一条评论,当你想从DetailViewController
删除(返回)ParentController
时,你必须输入这样的代码
- (IBAction)btnRemoveViewTapped:(UIButton *)sender{
[self removeFromParentController];
[self.view removeFromSuperView ];
}