我正在为拥有自己的子视图而苦苦挣扎UIViewControllers.我有一个UIViewController视图(浅粉色)和两个按钮toolbar.我希望在按下第一个按钮时显示蓝色视图,按下第二个按钮时显示的黄色视图.如果我只是想显示一个视图,应该很容易.但蓝色视图将包含一个表,因此它需要它自己的控制器.那是我的第一课.我从这个SO问题开始,我知道我需要一个控制器用于表.
所以,我要支持并采取一些婴儿步骤.下面是我的Utility ViewController(主视图控制器)和另外两个控制器(蓝色和黄色)的简单起点图片.想象一下,当ViewController首次显示Utility (主视图)时,将显示粉红色视图所在的蓝色(默认)视图.用户可以单击两个按钮来回移动,粉红色视图将永远不会显示.我只想将蓝色视图移到粉红色视图的位置,将黄色视图移到粉红色视图所在的位置.我希望这是有道理的.

我正在尝试使用addChildViewController.从我所看到的,有两种方法可以做到这一点:容器视图storyboard或addChildViewController编程.我想以编程方式进行.我不想使用NavigationController或Tab栏.我只想添加控制器,并在按下相关按钮时将正确的视图推入粉红色视图.
下面是我到目前为止的代码.我想要做的就是显示粉红色视图所在的蓝色视图.从我所看到的,我应该能够addChildViewController和addSubView.这段代码不适合我.我的困惑是让我变得更好.有人可以帮我看到粉红色视图所在的蓝色视图吗?
除了在viewDidLoad中显示蓝色视图外,此代码不用于执行任何操作.
IDUtilityViewController.h
#import <UIKit/UIKit.h>
@interface IDUtilityViewController : UIViewController
@property (strong, nonatomic) IBOutlet UIView *utilityView;
@end
Run Code Online (Sandbox Code Playgroud)
IDUtilityViewController.m
#import "IDUtilityViewController.h"
#import "IDAboutViewController.h"
@interface IDUtilityViewController ()
@property (nonatomic, strong) IDAboutViewController *aboutVC;
@end
@implementation IDUtilityViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.aboutVC = [[IDAboutViewController alloc]initWithNibName:@"AboutVC" bundle:nil];
[self addChildViewController:self.aboutVC];
[self.aboutVC didMoveToParentViewController:self];
[self.utilityView addSubview:self.aboutVC.aboutView];
}
@end
Run Code Online (Sandbox Code Playgroud)
- - - - …
我有一个疑问:有没有办法拦截tableView滚动添加动作?例如,我的prototype cell背景为红色,在单元格内触摸,其背景颜色开始为蓝色,滚动tableView背景颜色为红色.是否有可能做到这一点?!
提前致谢.
我想要一个从屏幕外开始的桌面视图,可以在屏幕上滚动,到达顶部,并继续滚动.我已经在下面看到了所需的互动.
我尝试过两件事,但两件事都不像我需要的那样.
我做的第一件事是将tableview放在scrollview中,并在tableview上检测到平移时移动scrollview.这会阻止tableview中的触摸,即使我可以检测到tableview何时触及屏幕顶部,我也不确定如何继续滚动.
我尝试的第二件事是将scrollview的内容大小设置为tableview的高度.这让tableview滚动,但我似乎只能在标记为"List Item 1"的初始小矩形中接收触摸.当tableview滚动时,我无法抓住中间并再滚动它.
构建此交互的最佳方式是什么?编辑:地图将此底部视图围绕在左侧,右侧和大部分顶部.拉起底部视图时,地图左右可见.
1.)

2.)

3.)(这将继续滚动列表中的多个项目.)
