- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有 Storyboard:
如您所见,我有带容器的 MenuViewController : UIViewController。容器是MenuTableViewController : UITableViewController使用 MenuTableView : UITableView。
我想做的是更改容器 (MenuTableViewController) 的大小,并将另一个子项添加到我的 mainVC。
我在 MenuViewController 中添加它:
-(void)viewDidAppear:(BOOL)animated {
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
MenuTableViewController* secondChildVC = [sb instantiateViewControllerWithIdentifier:@"MenuTableViewController"];
[secondChildVC.view setBackgroundColor:[UIColor redColor]];
[self addChildViewController:secondChildVC];
NSLog(@"MenuTableViewController.view info: %@",secondChildVC.view);
NSLog(@"secondChildVC views: %@",[secondChildVC.view subviews]);
MenuTableViewController *firstChildVC = [self.childViewControllers objectAtIndex:0];
[firstChildVC.view setFrame:CGRectMake(160, 0, 160, 504)];
[firstChildVC.view setBackgroundColor:[UIColor greenColor]];
NSLog(@"firstChildVC views: %@",[firstChildVC.view subviews]);
}
这是我的日志:
MenuTableViewController.view info: <MenuTableView: 0x8910e00; baseClass = UITableView; frame = (0 20; 320 548); clipsToBounds = YES; opaque = NO; autoresize = W+H; gestureRecognizers = <NSArray: 0x761eca0>; layer = <CALayer: 0x76202b0>; contentOffset: {0, 0}>
2013-05-03 17:20:10.796 TestStories[41780:c07] secondChildVC views: (
"<UIImageView: 0x76205e0; frame = (0 541; 320 7); alpha = 0; opaque = NO; autoresize = TM; userInteractionEnabled = NO; layer = <CALayer: 0x7620680>>",
"<UIImageView: 0x7620740; frame = (313 517; 7 7); alpha = 0; opaque = NO; autoresize = LM; userInteractionEnabled = NO; layer = <CALayer: 0x76207e0>>"
)
2013-05-03 17:20:10.798 TestStories[41780:c07] firstChildVC views: (
"<UITableViewCell: 0x7143110; frame = (0 320; 160 320); autoresize = W; layer = <CALayer: 0x713cc10>>",
"<UITableViewCell: 0x7140b90; frame = (0 0; 160 320); autoresize = W; layer = <CALayer: 0x7140ce0>>",
"<UIImageView: 0x7135000; frame = (0 497; 320 7); alpha = 0; opaque = NO; autoresize = TM; userInteractionEnabled = NO; layer = <CALayer: 0x71351b0>>",
"<UIImageView: 0x7135270; frame = (153 517; 7 7); alpha = 0; opaque = NO; autoresize = LM; userInteractionEnabled = NO; layer = <CALayer: 0x7135310>>"
)
为什么我的 secondChildVC 不包含 TableViewCells?不知道。
您可以看到我使用红色和绿色作为背景(secondChildCV 为红色)。但可能永远不会出现。这是截图:
最佳答案
我认为您做错了几件事。 subview Controller 将与容器 View 大小相同,因此您应该有一个容器 View 的 IBOutlet,并更改其大小,而不是更改 subview Controller 的大小。
对于第二个 child ,您将其添加为 child ,但您永远不会将其 View 添加到 MenuViewController 的 View 中。您还应该在将其添加为子级后立即调用 didMoveToParentViewController。所以你需要做类似的事情:
MenuTableViewController* secondChildVC = [self.storyboard instantiateViewControllerWithIdentifier:@"MenuTableViewController"];
[secondChildVC.view setBackgroundColor:[UIColor redColor]];
[self addChildViewController:secondChildVC];
[secondChildVC didMoveToParentViewController:self];
secondChildVC.view.frame = CGRectMake(0,0,160,504);
[self.view addSubview:secondChildVC.view];
另请注意,您可以使用 self.storyboard 更简单地获取对 Storyboard的引用
关于ios - 如何以编程方式添加 ChildVC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16362427/
我有 Storyboard: 如您所见,我有带容器的 MenuViewController : UIViewController。容器是MenuTableViewController : UITabl
最新的 Swift/XCode/iOS。 好的,我正在尝试在容器 View 中更换子 VC。我读过几篇描述如何做到这一点的帖子,它们非常有帮助。但是,我似乎遇到了一个我可以解决的限制问题。 我有一个包
我有一个 tabBar,其中有一个选项卡,其中包含一个 NavVC,该 NavVC 的根作为 ParentVC。 ParentVC 有一个管理两个子VC(RedVC 和BlueVC)的segmente
好吧,我对此是全新的,并且在阅读许多教程和文章时有点不知所措。并花了几个小时来解决类似的问题,但没有运气解决我自己的问题。我有一个“AddSiteVC”,允许用户添加或删除放入 CoreData 的项
我在做一件相当简单的事情时遇到了一些困难,我遗漏了一些东西但没有看到...... 我用一个非常简单的应用程序(使用 IB)重现了这个问题: 应用的主要 ViewController 是一个 UINav
我是一名优秀的程序员,十分优秀!