两个视图 多个 UIPickerViews 单个出口

2024-02-04

我的应用程序有两个视图,具体取决于它决定加载哪个视图的方向。但是IB不允许我将两个PickerView连接到同一个OUTLET,有没有一种方法可以在代码中分配连接,以便在加载视图时将连接分配给outlet?

或者我应该为每个视图做两次?

或者我应该将两个视图分成不同的 nib 文件

请在这方面协助我

Thanks


好吧,请记住,IBOutlet 只是一个以使其在 IB 中可见的方式声明的属性。所以你的第一个问题的答案是肯定的。如有必要,您始终可以在代码中重新分配该属性。

我假设您已经有两个 IBOutlet 用于横向和纵向视图 - 如下所示:

@property (nonatomic, retain) IBOutlet UIView *landscapeView;
@property (nonatomic, retain) IBOutlet UIView *portraitView;

听起来您正在选择适当的视图willAnimateRotationToInterfaceOrientation:duration:.

同样,您可以为选择器视图声明两个出口:

@property (nonatomic, retain) IBOutlet UIPickerView *landscapePickerView;
@property (nonatomic, retain) IBOutlet UIPickerView *portraitPickerView;

如果您走这条路,我会声明一个动态属性,该属性始终返回当前方向的选择器视图。

@property (nonatomic, retain, readonly) UIPickerView *pickerView;

您可以像这样实现它,而不是综合这个属性:

- (UIPickerView *) pickerView {
    if (self.landscapeView.superview) {
        return self.landscapePickerView;
    }
    else {
        return self.portraitPickerView;
    }
}

但是,如果您有多个子视图,那么拥有像这样的并行属性会使您的控制器变得混乱,这可能会很痛苦。在这种情况下,我会考虑创建一个 UIView 的自定义子类,称为 PickerContainer 之类的东西,它具有用于 pickerView 和您需要访问的任何其他子视图的出口。然后在 IB 中,您可以将横向和纵向视图的类更改为 PickerContainer,并且可以将每个选择器直接连接到其超级视图。然后在你的控制器中你可以创建一个动态属性,如下所示:

@property (nonatomic, retain, readonly) PickerContainer *pickerContainer;

- (PickerContainer *)pickerContainer {
    return (PickerContainer *)self.view;
}

之后,您可以通过其容器访问当前方向的 pickerView,如下所示:

[self.pickerContainer.pickerView reloadAllComponents];

编辑:这是我的实现方式willAnimateRotationToInterfaceOrientation:duration:关于我的一个项目:

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration {
    if (UIInterfaceOrientationIsPortrait(interfaceOrientation)) {
        if (self.landscapeView.superview) [self.landscapeView removeFromSuperview];
        self.portraitView.center = CGPointMake(self.view.bounds.size.width / 2,
                                               self.view.bounds.size.height / 2);
        [self.view addSubview:self.portraitView];
    }
    else {
        if (self.portraitView.superview) [self.portraitView removeFromSuperview];
        self.landscapeView.center = CGPointMake(self.view.bounds.size.width / 2,
                                                self.view.bounds.size.height / 2);
        [self.view addSubview:self.landscapeView];
    }
}

我的横向和纵向视图在 IB 中配置为没有支柱或弹簧,这意味着所有边距都是灵活的,但宽度和高度不是。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

两个视图 多个 UIPickerViews 单个出口 的相关文章

  • 使用 UINavigationController 从右向左推送 ViewController

    大家都知道UINavigationController从左到右推送ViewController 有没有办法从右到左推送View 就像后退按钮的动画一样 现在我有这个 self navigationController pushViewCon
  • 当点击 UITableViewCell 的子视图时引发选择事件 (didSelectRowAtIndexPath)

    我创建了一个自定义 UITableViewCell 其中包含许多子视图 在大多数情况下 我希望 UITableViewCell 的控制器来处理事件 在一种情况下 我希望子视图简单地将事件传递给父 UITableViewCell 这将导致它在
  • 如何在 iPhone 应用程序的 url 中传递字符串值

    NSURLRequest request NSURLRequest requestWithURL NSURL URLWithString http www krsconnect no community api html method ba
  • 核心数据:解决一个奇怪的 EXC_BAD_ACCESS 错误

    我在核心数据方面面临着一个非常奇怪的问题 我们来描述一下 定义 假设我有两个模型 ModelA and ModelB 在数据模型中ModelA有参考ModelB作为一对多关联 因此ModelB与 具有一对一关联ModelA Update 当
  • NSMutableData 删除字节?

    我可以使用以下命令轻松地将字节添加到 NSMutableData 实例appendData方法 但是我没有看到任何类似的删除数据的方法 我是否忽略了某些内容 或者我是否需要创建一个新对象并仅复制我需要的字节 请参阅以下方法的文档 void
  • 使用捏合手势;如何放大用户手指实际“捏”的位置?

    我已经在我的应用程序中的 UIImageView 上实现了 UIPinchGestureRecognizer 但是无论我在图像的哪个位置捏合 它似乎都会放大到同一个位置 有谁知道我如何让它放大到用户实际 捏 的地方 请参阅下面的代码 视图控
  • 从 NSString 的第一行删除换行符

    我怎样才能删除第一个 nNSString 中的字符 编辑 只是为了澄清一下 我想做的是 如果字符串的第一行包含 n 字符 请将其删除 否则不执行任何操作 即 如果字符串是这样的 nhello this is the first line n
  • 处理 NSPropertyListSerialization 中的 CFNull 对象

    在我的应用程序中 我尝试序列化服务器响应字典并将其写入文件系统 但对于某些响应 我收到错误 属性列表格式无效 原因是服务器响应中的 CFNull 对象 现在 服务器响应将不断变化 因此我没有明确的方法来删除 CFNull 对象 下面是我的代
  • Apple 推送通知徽章编号

    我开发了服务器端应用程序 以在收到新通知后将徽章编号维护为递增或递减 并在看到通知后删除它工作正常 但是显示徽章时存在一些问题 实际情况是 在设备上收到新通知后 我单击取消按钮 然后徽章编号正确显示 但之后我将打开应用程序并关闭应用程序徽章
  • StoryBoard 2 导航控制器指向相同的视图

    有谁知道为什么这不起作用 这样 只有一个选项卡栏加载视图 另一个选项卡栏则显示黑屏 我在没有导航控制器的情况下尝试过 选项卡栏是正确的 而另一个在运行模式下不显示选项卡栏项目 如果有人感兴趣的话我对这个问题的回答 添加两个视图来启动我们感兴
  • 使用 iOS 设备作为 TCP 客户端 - 无 Bonjour

    我想使用 iOS 设备作为 TCP 客户端 但我找不到可理解的 API 指南 示例来说明如何做到这一点 我试过SimpleNetworkStreams and PictureSharing 但他们都使用 Bonjour 我可以轻松建立 UD
  • 拦截传入短信

    我想知道拦截短信的选项有哪些 我希望能够在收到短信时启动一些代码来处理短信 任何关于这在技术上是否可行以及如果有不止一种方法我有什么选择的建议 将不胜感激 谢谢 保罗 由于您有如此多的标签 因此很难判断您实际上是为哪个操作系统开发的 在 i
  • UITextInput setMarkedText:selectedRange 不起作用? (不可能!)

    我想以编程方式设置标记的文本 并且由于 iOS5 UITextView 和 UITextField 符合 UITextInput 这应该是可能的 但由于某种原因我总是得到markedText为零 我在这里缺少什么 这是我尝试过但没有成功的方
  • 带约束的 Swift 动画

    是否可以通过改变约束来制作 UIView 动画 基本上 我想要动画myv UIView 具有 x y 高度和宽度约束 使用 UIView animateWithDuration 1 5 通过改变旧的限制 是的 这是可能的 你可以这样做 fu
  • Apple Mach-O 链接器错误 armv7s 和 libGoogleAdMobAds.a

    我刚刚升级了我的应用程序以在新的 iPhone5 模拟器上运行 但是当我尝试为我的 iPhone 4S 设备构建它时 我收到此 Apple Mach O Liner 错误 ld 文件是通用的 3片 但不包含 n armv7s 切片 User
  • 即时将图像添加到 AR 资源以进行图像识别

    ARKit1 5介绍图像识别 在代码中 您必须创建一组参考图像 如下所示 let referenceImages ARReferenceImage referenceImages inGroupNamed AR Resources bund
  • 将 Facebook 图片 URL 上传到 Firebase 存储

    我正在尝试将用户的 Facebook 个人资料图片上传到 Firebase 存储 let dictionary result as NSDictionary let data dictionary objectForKey data let
  • 更改选项卡栏应用程序中的 UITableViewController 样式

    我有一个带有 4 个选项卡的选项卡栏 iPhone 应用程序 在界面生成器中 我为每个选项卡设置视图控制器 我想将一个 UITableViewController 的样式从普通样式更改为分组样式 我用这样的方式替换 init 方法 id i
  • NSURLConnection 是否自动保留从服务器发送的 cookie?

    我从 ios 登录到我的龙卷风后端并发回 secure cookie 我注意到只要验证我设置的 secure cookie 我还可以请求其他信息 NSURLConnection 会保留 cookie 多久 或者关闭应用程序后 cookie
  • 如何将 NSAppTransportSecurity 添加到 Cordova 项目

    我正在从事一个 ionic cordova 项目 该应用程序需要配置 iOS 9 版本的应用程序传输安全例外 有谁知道如何将以下配置添加到 cordova 项目配置文件中 配置 xml

随机推荐

  • 分号作为 URL 查询分隔符

    虽然强烈推荐 W3C 源代码 http www w3 org TR 1999 REC html401 19991224 appendix notes html h B 2 2 via 维基百科 http en wikipedia org w
  • Spring Tool Suite 更改键绑定自动完成

    How do I change the keybinding for code autocompletion Ctrl Space is just horrible I would like to have Alt Space But un
  • 项目文件夹已存在且不为空 - netbeans 中出现错误

    我正在使用 NetBeans 7 0 1 当我尝试创建 JAVA 应用程序时 出现错误 项目文件夹已存在且不为空 但事实是项目文件夹不存在 它们的目录中没有同名文件夹 任何建议都会有很大的帮助 提前致谢 当您尝试创建它时 问题是否出现了 或
  • Solrcloud 删除集合错误?

    首先 我创建一个名为的集合用户集合 http xxxxx solr admin collections action CREATE name usercollection numShards 3 replicationFactor 3 ma
  • docker-compose内部DNS服务器127.0.0.11连接被拒绝

    突然 当我使用 docker compose 部署一些新容器时 内部主机名解析不起作用 当我尝试使用 docker compose yaml 文件中的服务名称从另一个容器 ping 一个容器时 我得到了ping bad address my
  • 错误简单示例 lucene 4.0 与源(不是 jar lib)

    编辑 我找到了解决方案 编辑core jar 删除除编解码器包之外的所有包并添加到构建路径 编解码器包必须在jar中 不能是源代码 我无法理解 这是 Lucene 的非常简单的代码 它与 Lucene core lib 一起运行 但是当我使
  • SKLearn KMeans 收敛警告[重复]

    这个问题在这里已经有答案了 我在一维数据集上使用 SKLearn 的 KMeans 聚类 我遇到的错误是 当我运行代码时 我得到一个ConvergenceWarning ConvergenceWarning Number of distin
  • Pinterest Api 限制返回的 pin 数量

    使用此请求获取 Pinterest Api 用户的 pin 来自pinterest API 文档 https stackoverflow com questions 9951045 pinterest api documentation h
  • 泛型,其中 T 是实现接口的类

    我有一个界面 interface IProfile 和一个类 Serializable class Profile IProfile private Profile private to ensure only xmlserializer
  • 查看用户最近执行的Android任务

    我想查看我的 Android 手机最近的任务 我尝试了一些来自互联网的代码 但没有一个能正常工作 我只想获取用户最后执行的应用程序的PID和名称 例如 如果我执行计算器应用程序 然后执行我创建的最近任务应用程序 则该应用程序应该能够告诉我类
  • 本地时间(以毫秒为单位)

    我怎样才能通过图书馆提升获得当前时间 我可以做这个 ptime now boost posix timesecond clock local time tm d tm to tm now 但最后一个时间单位tm结构是第二位 我需要以毫秒为单
  • 用于 Git 更新的 RSS 提要

    是否有我可以订阅的 RSS Atom 提要或 Git 更新邮件列表 我发现很难跟上最新版本 因为我无法知道新版本何时发布 对于 msysgit Windows 端口 它只是 Google Code 提供的 feed http code go
  • 可以停止由 VIsual Studio 2015 生成 *.ipdb *.iobj 文件吗?

    在 Visual Studio Community 2015 中 Visual C 项目在其 Release 文件夹中生成 ipdb 文件和 iobj 文件 现在在 Visual Studio Community 2013 中 我从未见过在
  • C++ 重载运算符 [ ][ ]

    我有 CMatrix 类 其中是指向值数组的 双指针 class CMatrix public int rows cols int arr 我只需要通过键入以下内容来访问矩阵的值 CMatrix x x 0 0 23 我知道如何使用以下方法
  • Django - 改变迁移中的基础

    由于某些原因 我想对我的模型进行重大更改 我想以某种方式重新设计我的整个设计 但 Django 迁移实现通过不更新我的模型库来记住以前的设计 让我快速展示一下我以前拥有的和现在拥有的 app1 TopLevel app1 Intermedi
  • 将日期和整数合并到 ARRAY 中

    如何选择array agg ARRAY f1 date ARRAY f2 int f3 decimal 合并时出现错误date and integer在数组中 upd 添加了图片解释我计划在何处以及如何使用数组 问题是数据库大小 将 3 列
  • Python安装编译错误

    我希望有人可以帮助我 因为我已经被困在这个问题上有一段时间了 而且我对编译包不太熟悉 尝试安装以下软件包 https github com jhkorhonen MOODS wiki Installation https github co
  • 强制关闭 COM 端口

    我正在开发一个使用 COM 端口与外部控制器通信的应用程序 当我在连接通信电缆的情况下重新启动电脑时 Windows 7 打开该端口 但没有运行任何应用程序 因此我无法再访问它 我尝试以编程方式关闭它 但它仍然被占用 任何人都知道如何强制它
  • “VisualTree”被设置多次

    我在这个 xaml 文件中不断收到错误 属性 VisualTree 被设置多次
  • 两个视图 多个 UIPickerViews 单个出口

    我的应用程序有两个视图 具体取决于它决定加载哪个视图的方向 但是IB不允许我将两个PickerView连接到同一个OUTLET 有没有一种方法可以在代码中分配连接 以便在加载视图时将连接分配给outlet 或者我应该为每个视图做两次 或者我