问题标签 [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.
ios - SpriteKit 视图未在 ViewController 的 viewDidLoad 中呈现场景
目标: 红色矩形(Brick 类)应出现在蓝色背景中,并带有节点数和 fps。
现实: 灰色背景和节点数和 fps(例如没有红色矩形或蓝色背景)
我有以下代码:
游戏视图控制器
我最好的猜测是 GameViewController 出了点问题,但我不确定是什么。viewDidLoad() 必须被调用,因为我得到了 fps 和节点数。
游戏场景
由于缺乏复杂性,我认为 GameScene 没有任何问题。
应用委托
我知道我的 AppDelegate 没有任何问题,因为如果我将 self.window!.rootViewController 更改为 UIViewController,我会得到橙色屏幕。
objective-c - 在自定义构建的 UIViewControllers 值之间传递数据在 iOS 9 中变为 nil 在 iOS8 中工作
我创建了一个自定义 UIViewController。
但是在 iOS9 的 viewWillAppear 中 optionArray 的值变成了 nil。它在iOS8中工作。我已经花了几个小时没有运气。
这就是我调用getPopoverViewControllerForTextField
上面列出的方法的地方。
执行上面的代码后,我仍然可以看到 optionArray 的值。optionArray 里面仍然存在
但是当它开始执行 viewWillAppear 时,optionArray 变成了 nil。
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,其视图不在窗口层次结构中!
结果是:
- 照片库选择器//相机应用程序永远不会出现。
- 由于某种原因,ViewController B 经历了动画关闭。
有没有人有什么建议?我试图提供相关代码,但如果需要,我可以粘贴更多。谢谢你。
- 更新 - - - -
好的,所以经过更多研究,实际上有两个不同的事情发生:
第一个错误是移动浏览器如何处理“文件选择器”的函数。 看这里... 宏伟的计划,没什么大不了的。
第二个错误
Attempt to present UIImagePickerController...
——两者中更使人衰弱的——更丑陋。
如果带有 WKWebView 的 ViewController 是从另一个ViewController 呈现的,那么当用户尝试“挑选”图像(从库或相机)时,iOS 将尝试从WKWebView ViewController 呈现 UIImagePicker,这就是你想要的。
不幸的是,由于我还不知道的原因,用户试图“挑选”图像的行为也会导致 iOS 关闭呈现的视图控制器......在这种情况下,它是你的 WKWebView 控制器 :( 因此,WKWebView ViewController 关闭,因此当它尝试呈现 UIImagePicker 时它不在窗口层次结构中 - 因此出现错误。
我的解决方案(这很老套,但适用于我的特定用例)如下;我希望这可以帮助别人:
- 实例化 WKWebView ViewController ( ViewController B )
- 将VC B设置为应用的根视图控制器
- 从ViewController A 呈现VC B
- 解雇VC A
这基本上使得 WKWebView 不能被解雇,回避问题。
ios - 分页引擎架构 - iOS
创建分页引擎架构的最佳方法是什么?
在我之前的实现中,我会
我们认为这对于每个功能来说都是过多的重复代码,因此决定删除重复代码。
我们写了一个类别UIViewController
来处理数据分页。现在我们使用 处理类别内的所有计算scrollViewDidScroll
并使用添加指示页脚视图objc_setAssociatedObject
。
我认为Associated objects
应该将其视为一种不得已的方法,而不是寻找问题的解决方案(实际上,类别本身不应该在一开始就位于工具链的顶部)。
所以我的问题是——这个新设计是解决这个问题的最佳方案吗?或者你会推荐一些更好的方法吗?
ios - 警告:尝试显示其视图不在窗口层次结构中
我在 UIViewController 中有一个 UITabView,所有选项卡项都链接到其他 UIViewControllers。我写了一个通过互联网下载文件的快速代码。当我选择第二个tabItem时,这段代码运行良好,它下载并预览下载的文件,然后当我点击第一个tabItem,然后再次点击第二个tabItem;文件下载得很好,但它没有显示任何预览,而是 xCode 给了我一条警告消息:当我再次单击第二个 tabItem 时,我想要的是下载文件和预览文件都应该工作。无论代码是什么。
警告:尝试在其视图不在窗口层次结构中的 KPIViewController 上呈现 QLPreviewController
我在互联网上找到了很多解决方案,但没有奏效
第一个解决方案说要使用
但是这个功能
不要接受
UIDocumentInteractionController
第二种解决方案说要覆盖现有presentViewController
功能
我试过了,但它的参数中还需要一个 UIViewController,UIDocumentInteractionController
我知道这些函数不能接受UIDocumentInteractionController
类型 viewController。
这是我的整个快速代码:
我找不到任何合适的解决方案来解决我的问题。我是 swift 新手,请任何人帮助我。提前致谢
xcode - swift 在 UIviewcontroller 中使标签可点击
我希望标签可点击以在 safari 中打开 url,点击时在电子邮件中打开电话号码和电子邮件地址
我添加了这个功能,但它不起作用:
ios - 在哪种情况下,您使用 UIViewController 类和 UITableViewDelegate/UITableViewDataSource 协议而不是直接的 UITableViewController?
我问是因为我刚刚下载了两个示例 swift 项目:一个是待办事项列表,另一个是联系人列表,两者都使用UIViewController
符合UITableViewDelegate/UITableViewDataSource
协议的类而不是UITableViewController
. 这两种做法有什么不同吗?
在代码中:
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {...}
对比
class ViewController: UITableViewController {...}
ios - 自定义委托没有被调用?
实际上,我在我的应用程序中命名了三个视图控制器。我从 A 导航到 B,然后从 B 导航到 C。我从 C 调用委托方法,该方法在 A 中实现。这是我的代码
A.h
在A.m
我有
在B.h
在B.m
在C.h
在C.m
如果我<delegateName>
输入A.h
而不是A.m
then 它说undeclared delegate
。
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)
。
我怎样才能让这个层次结构正常工作?
swift - 尝试在 UIPickerView 中选择一行时如何捕获 nil 错误?
UIPickerView
显然,如果您在viewWillAppear
第一次运行视图时尝试从 a 中获取元素,应用程序将崩溃并返回nil
错误。
如果我注释掉以下行并运行应用程序,一切正常。然后我取消注释以下行并再次运行,它工作正常并继续正常工作。
我不知道有什么区别。也许应用程序中发生了其他事情。有没有办法抓住那个首字母nil
然后把它吞下去?它将模仿视图的第一次访问并注释掉代码。首次访问视图后,nil
将不再返回。