当前位置: 首页 > 知识库问答 >
问题:

使用故事板的容器视图、交互和视图问题

濮冠宇
2023-03-14

我一直试图以iPad仪表板的方式实现两个简单容器并排的视图布局。

我已经阅读了很多例子,当然还有苹果的视图控制器参考,但是我有一个非常奇怪的问题,希望能有一个简单的解释。

我已经并排添加了两个视图容器,每个容器将容纳一个具有不同背景颜色的viewcontroller、一个圆形Rect按钮和一个标签。出于测试目的,我还在“mainViewController”中添加了一个圆形Rect按钮。

所以非常直接和简单。每个视图都会加载到容器视图中,但是我不能与它们中的任何一个交互(当单击按钮时,什么都不会发生,没有蓝色突出显示,因此这不是委派的问题,也不是是否接收到来自按钮的任何操作,因为没有实现类似的操作)。但是,点击我放在“mainViewController”中的按钮,可以完美地控制两个容器(始终闪烁蓝色)。另一件奇怪的事情是,背景颜色也没有显示在容器视图上?!只有按钮和标签。

程序如下:

文件:ViewController. h和. m(是“main ViewController”)sidebarViewController. h和. m(在这些文件中没有任何变化,UIViewController)结果ViewController. h和. m(在这些文件中没有任何变化,UIViewController)应用代表. h和. m(没有变化)故事板

视图控制器。h、 在情节提要中创建并连接到每个容器视图的插座。

#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

故事板标识符设置为侧边栏视图控制器和故事板中的结果视图控制器。

视图控制器。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视图后面,因此只显示不可单击。在应用程序代理中需要做什么(如果有什么)才能使其正常工作?或者我在这段代码中犯了什么错误?

编辑:找到了另一个可能出错的线索:当我为故事板禁用“自动布局”时,视图显示并工作(!)但完全失真了,但现在至少我得到了正确的背景颜色,按钮也正常工作。有人知道如何在不禁用自动布局的情况下修复此问题吗?因为我想我必须按程序做所有的布局(

非常感谢,,

共有1个答案

锺离玮
2023-03-14

您拥有的所有代码都是不必要的,可能正是这些代码导致了您的问题。在IB中添加容器视图时,它会自动为您创建这些嵌入式视图控制器(并将其调整为容器视图的大小)。你拿到了吗?您所需要做的就是将它们的类更改为子类视图控制器的类。如果需要从“主”视图控制器访问这些控制器,可以从ChildViewController属性获取对它们的引用。

 类似资料:
  • 我已经通读了《iOS View Controller编程指南》和《iOS View编程指南》,如果代码或情节提要中没有大量复制,我无法找到执行以下操作的最佳方法。 我正在为我的孩子们编写一个简单的数学教程程序,其中有一个带有数字“NumberPad”(数字0-9)的视图,以及一些动画的场景。 到目前为止,我有一个视图控制器,它处理简单的加减乘除问题,工作良好。 我想为一个视图控制器使用相同的数字键

  • 我最近从故事板转换到XIB。因为我有大量的视图,而且在git存储库上使用XIB更容易。(此外,该应用程序现在将可用于iOS4)。 下面是我以前拥有的代码,但我想知道如果没有故事板,但使用XIBs,我将如何实现同样的功能:

  • 我有一个需要在景观和肖像视图中呈现的视图。我使用这个解决方案来提供方向:故事板中方向的解决方案 所选视图是ViewController的视图,它有两个视图:第一个是纵向视图,第二个是横向视图。我隐藏了不符合设备方向的视图。 与图像中一样,视图、纵向视图和横向视图都有容器视图,通过segue链接到视图控制器。据我所知,故事板应该在加载主视图控制器时调用所有分段。我在方法中得到Segue调用。 如果肖

  • 我被一个问题困住了,我在官方留档、Stackoverflow或谷歌上找不到答案。 我是一名经验丰富的iOS开发人员,但不熟悉故事板。我想在当前viewcontroller上实例化一个视图,在NIB中,我将在viewcontroller外部绘制一个视图,并附加一个出口以在代码中引用它,并调用addSubview:之类的东西。在MapView委托中绘制覆盖图或详图索引视图非常有用。但我不知道如何在故事

  • 视图容器说明 组件 说明 最低版本 view 视图容器 1.0.0 scroll-view 可滚动视图区域 1.0.0 web-view webview视图 1.0.0 swiper 滑块视图容器 1.0.0 swiper-item 仅可放置在swiper组件中 1.0.0 cover-image 覆盖在原生组件之上的图片视图 2.8.3 cover-view 覆盖在原生组件之上的文本视图 2.8

  • 组件 说明 最低版本 备注 cover-image 覆盖在原生组件之上的图片视图 2.8.3 cover-view 覆盖在原生组件之上的文本视图 2.8.3 match-media media query 匹配检测节点 2.9.3 movable-area movable-view的可移动区域 2.9.3 movable-view 可移动的视图容器,在页面中可以拖拽滑动 2.9.3 scroll-