ios – 使用Storyboard,交互和视图问题的容器视图

前端之家收集整理的这篇文章主要介绍了ios – 使用Storyboard,交互和视图问题的容器视图前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直试图用iPad仪表板方式并排实现两个简单容器的View布局.

我一直在阅读大量的例子,当然还有视图控制器的Apple View Controller参考,但总的来说,我有一个最奇怪的问题,希望有一个简单的解释.

我并排添加了两个视图容器,每个容器都包含一个具有不同背景颜色的视图控件,一个圆形矩形按钮和一个标签.为了测试目的,我还在“mainViewController”中添加了一个Round Rect按钮.

所以相当简单直接.每个视图都被加载到容器视图中,但是我不能与它们中的任何一个进行交互(当点击按钮时,没有发生,没有蓝色突出显示,所以这不是委托的问题或是否接收到按钮的任何动作,因为没有这样的实现).然而,点击我放在“mainViewController”中的按钮,拿着两个容器,完美无瑕地工作(一如既往地闪烁蓝色).另一个奇怪的事情是容器视图上没有显示背景颜色?!只有按钮和标签.

方案如下:

文件
ViewController.h和.m(是“mainViewController”)
sidebarViewController.h和.m(这些文件没有改变,UIViewController)
resultsViewController.h和.m(这些文件没有改变,UIViewController)
AppDelegate.h和.m(无变化)
故事板

ViewController.h,创建并连接到Storyboard中每个容器视图的出口.

#import <UIKit/UIKit.h>
#import "sidebarViewController.h"
#import "resultsViewController.h"

@interface ViewController : UIViewController

@property (nonatomic,weak) IBOutlet UIView *sidebarView;
@property (nonatomic,weak) IBOutlet UIView *resultsView;


@end

故事板标识符设置为storyboard中的sidebarViewcontroller和Resultsviewcontroller.

ViewController.m,这本书所做的一切(或者可能不是,但至少对我来说似乎是这样)

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

@synthesize sidebarView,resultsView;

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view,typically from a nib.

UIStoryboard *storyboard = self.storyboard;
sidebarViewController *sideVC  = [storyboard instantiateViewControllerWithIdentifier:@"SidebarViewController"];
resultsViewController *resultsVC  = [storyboard instantiateViewControllerWithIdentifier:@"ResultsViewController"];

//sidebarViewController *sideVC = [[sidebarViewController alloc]init];
//rresultsViewController *resultsVC = [[resultsViewController alloc]init];
[self addChildViewController:sideVC];
sideVC.view.frame = self.sidebarView.frame;
[self.sidebarView addSubview:sideVC.view];
self.sidebarView.userInteractionEnabled = YES;
[sideVC didMoveToParentViewController:self];

[self addChildViewController:resultsVC];
resultsVC.view.frame = self.resultsView.frame;
[self.resultsView addSubview:resultsVC.view];
self.resultsView.userInteractionEnabled = YES;
[resultsVC didMoveToParentViewController:self];

}

(我也有self.xxxxView,并且首先按顺序输入addChildViewController语句)

好吧,我的怀疑当然是它与视图层次结构有关,视图位于rootViewController视图的“后面”,因此只显示不可点击.需要在App委托中完成什么(如果有的话)才能使其工作?或者我在这段代码中做了别的错误

编辑:发现可能出错的另一个线索:当我为故事板禁用“自动布局”时,视图显示并工作(!)但完全失真,但现在至少我得到正确的背景颜色并且按钮正在工作.任何人都知道如何解决这个问题而不禁用自动布局?因为我想我必须以编程方式完成所有布局呢?

猜你在找的iOS相关文章