问题标签 [uivewcontroller]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2107 浏览

ios - SpriteKit 视图未在 ViewController 的 viewDidLoad 中呈现场景

目标: 红色矩形(Brick 类)应出现在蓝色背景中,并带有节点数和 fps。

现实: 灰色背景和节点数和 fps(例如没有红色矩形或蓝色背景)

我有以下代码:

游戏视图控制器

我最好的猜测是 GameViewController 出了点问题,但我不确定是什么。viewDidLoad() 必须被调用,因为我得到了 fps 和节点数。

游戏场景

由于缺乏复杂性,我认为 GameScene 没有任何问题。

应用委托

我知道我的 AppDelegate 没有任何问题,因为如果我将 self.window!.rootViewController 更改为 UIViewController,我会得到橙色屏幕。

0 投票
1 回答
70 浏览

objective-c - 在自定义构建的 UIViewControllers 值之间传递数据在 iOS 9 中变为 nil 在 iOS8 中工作

我创建了一个自定义 UIViewController。

但是在 iOS9 的 viewWillAppear 中 optionArray 的值变成了 nil。它在iOS8中工作。我已经花了几个小时没有运气。

这就是我调用getPopoverViewControllerForTextField上面列出的方法的地方。

执行上面的代码后,我仍然可以看到 optionArray 的值。optionArray 里面仍然存在

但是当它开始执行 viewWillAppear 时,optionArray 变成了 nil。

0 投票
1 回答
3533 浏览

ios - UIImagePickerController & 视图不在窗口层次结构中

我有一个简单的 Swift 项目,其中:

ViewController A ( class ViewController: UIViewController) 表示ViewController B -- ( class WebViewController: UIViewController, WKNavigationDelegate, CLLocationManagerDelegate, WKScriptMessageHandler)。

ViewController B 本质上只是一个 WKWebView,这是它的viewDidLoad()

所以,当 ViewController B 出现时,我基本上只是在整个屏幕上都有一个 Web 浏览器。

我遇到的问题是,如果用户(在网页上)单击“文件上传/文件选择器”,首先我会看到:

传入的类型 public.item 不符合 public.content 或 public.data。如果您要导出新类型,请确保它符合适当的父类型。未定义 UICollectionViewFlowLayout 的行为,因为项目宽度必须小于 UICollectionView 的宽度减去部分插入左右值,减去内容插入左右值。

相关的 UICollectionViewFlowLayout 实例是 <_UIAlertControllerCollectionViewFlowLayout: 0x12e30f270>,它附加到 ; 动画 = { bounds.origin=; bounds.size=; 位置=; }; 层 = ; 内容偏移:{0, 0}; contentSize: {0, 0}> 集合视图布局:<_UIAlertControllerCollectionViewFlowLayout: 0x12e30f270>。

然后,如果用户从 iOS 选项列表中选择“拍摄照片或视频”或“照片库”,我会得到:

警告:尝试在 My.WebViewController: 0x12e2883e0 上呈现 UIImagePickerController: 0x12d192200,其视图不在窗口层次结构中!

结果是:

  1. 照片库选择器//相机应用程序永远不会出现。
  2. 由于某种原因,ViewController B 经历了动画关闭。

有没有人有什么建议?我试图提供相关代码,但如果需要,我可以粘贴更多。谢谢你。

- 更新 - - - -

好的,所以经过更多研究,实际上有两个不同的事情发生:

  1. 第一个错误是移动浏览器如何处理“文件选择器”的函数。 看这里... 宏伟的计划,没什么大不了的。

  2. 第二个错误Attempt to present UIImagePickerController...——两者中更使人衰弱的——更丑陋。

如果带有 WKWebView 的 ViewController 是从另一个ViewController 呈现的,那么当用户尝试“挑选”图像(从库或相机)时,iOS 将尝试WKWebView ViewController 呈现 UIImagePicker,这就是你想要的。

不幸的是,由于我还不知道的原因,用户试图“挑选”图像的行为也会导致 iOS 关闭呈现的视图控制器......在这种情况下,它是你的 WKWebView 控制器 :( 因此,WKWebView ViewController 关闭,因此当它尝试呈现 UIImagePicker 时它不在窗口层次结构中 - 因此出现错误。

我的解决方案(这很老套,但适用于我的特定用例)如下;我希望这可以帮助别人:

  1. 实例化 WKWebView ViewController ( ViewController B )
  2. VC B设置为应用的根视图控制器
  3. ViewController A 呈现VC B
  4. 解雇VC A

这基本上使得 WKWebView 不能被解雇,回避问题。

0 投票
1 回答
110 浏览

ios - 分页引擎架构 - iOS

创建分页引擎架构的最佳方法是什么?

在我之前的实现中,我会

我们认为这对于每个功能来说都是过多的重复代码,因此决定删除重复代码。

我们写了一个类别UIViewController来处理数据分页。现在我们使用 处理类别内的所有计算scrollViewDidScroll并使用添加指示页脚视图objc_setAssociatedObject

我认为Associated objects应该将其视为一种不得已的方法,而不是寻找问题的解决方案(实际上,类别本身不应该在一开始就位于工具链的顶部)。

所以我的问题是——这个新设计是解决这个问题的最佳方案吗?或者你会推荐一些更好的方法吗?

0 投票
1 回答
1054 浏览

ios - 警告:尝试显示其视图不在窗口层次结构中

我在 UIViewController 中有一个 UITabView,所有选项卡项都链接到其他 UIViewControllers。我写了一个通过互联网下载文件的快速代码。当我选择第二个tabItem时,这段代码运行良好,它下载并预览下载的文件,然后当我点击第一个tabItem,然后再次点击第二个tabItem;文件下载得很好,但它没有显示任何预览,而是 xCode 给了我一条警告消息:当我再次单击第二个 tabItem 时,我想要的是下载文件和预览文件都应该工作。无论代码是什么。

警告:尝试在其视图不在窗口层次结构中的 KPIViewController 上呈现 QLPreviewController

我在互联网上找到了很多解决方案,但没有奏效

第一个解决方案说要使用

但是这个功能

不要接受 UIDocumentInteractionController

第二种解决方案说要覆盖现有presentViewController功能

我试过了,但它的参数中还需要一个 UIViewController,UIDocumentInteractionController 我知道这些函数不能接受UIDocumentInteractionController类型 viewController。

这是我的整个快速代码:

我找不到任何合适的解决方案来解决我的问题。我是 swift 新手,请任何人帮助我。提前致谢

0 投票
1 回答
758 浏览

xcode - swift 在 UIviewcontroller 中使标签可点击

我希望标签可点击以在 safari 中打开 url,点击时在电子邮件中打开电话号码和电子邮件地址

我添加了这个功能,但它不起作用:

0 投票
0 回答
27 浏览

ios - 在哪种情况下,您使用 UIViewController 类和 UITableViewDelegate/UITableViewDataSource 协议而不是直接的 UITableViewController?

我问是因为我刚刚下载了两个示例 swift 项目:一个是待办事项列表,另一个是联系人列表,两者都使用UIViewController符合UITableViewDelegate/UITableViewDataSource协议的类而不是UITableViewController. 这两种做法有什么不同吗?

在代码中: class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {...}

对比

class ViewController: UITableViewController {...}

0 投票
2 回答
75 浏览

ios - 自定义委托没有被调用?

实际上,我在我的应用程序中命名了三个视图控制器。我从 A 导航到 B,然后从 B 导航到 C。我从 C 调用委托方法,该方法在 A 中实现。这是我的代码

A.h

A.m我有

B.h

B.m

C.h

C.m

如果我<delegateName>输入A.h而不是A.mthen 它说undeclared delegate

0 投票
1 回答
66 浏览

ios - 如何将 UI 元素保留在 UIViewController 及其呈现的 ViewController 之上?

我想在我的应用程序的第一个 VC 之上以及它呈现的第二个 VC 之上显示一些 UI 元素,例如搜索栏。

我的解决方案是创建一个 ContainerViewController,它调用addChildViewController(firstViewController), 和view.addSubview(firstViewController.view). 然后view.addSubview(searchBarView),每个 UI 元素都类似。

稍后,FirstViewController 可能会调用present(secondViewController),理想情况下,它会向上滑动到屏幕上,而我的搜索栏和其他元素仍然出现在两个视图控制器的顶部。

相反,secondViewController它显示在 ContainerViewController 的顶部,从而隐藏了搜索栏。

我还希望,当用户点击搜索栏时,ContainerViewController 会在所有内容之上显示 SearchVC。为此,它很简单 - containerVC.present(searchVC)

我怎样才能让这个层次结构正常工作?

0 投票
2 回答
34 浏览

swift - 尝试在 UIPickerView 中选择一行时如何捕获 nil 错误?

UIPickerView显然,如果您在viewWillAppear第一次运行视图时尝试从 a 中获取元素,应用程序将崩溃并返回nil错误。

如果我注释掉以下行并运行应用程序,一切正常。然后我取消注释以下行并再次运行,它工作正常并继续正常工作。

我不知道有什么区别。也许应用程序中发生了其他事情。有没有办法抓住那个首字母nil然后把它吞下去?它将模仿视图的第一次访问并注释掉代码。首次访问视图后,nil将不再返回。