- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当transition style
设置为Page Curl
(在 Storyboard中)时,我的UIPageViewController工作正常,但是当我将其更改为Scroll
时,它崩溃了因为索引超出范围。造成这种情况的差异是什么?我想不通
var times: [String]?
override func viewDidLoad() {
super.viewDidLoad()
self.dataSource = self
let arrayOfTimes = [Int](0...384).filter { $0 % 3 == 0 }
times = arrayOfTimes.map { String(format: "%03d", $0) }
showVC()
}
// MARK: UIPageViewControllerDataSource & UIPageViewControllerDelegate
func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {
if let currentPageViewController = viewController as? SinglePageViewController, currentTime = currentPageViewController.time {
let currentIndex = indexOftime(currentTime) //need to get it's index
return viewControllerAtIndex(currentIndex - 1)
}
return nil
}
func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {
if let currentPageViewController = viewController as? SinglePageViewController, currentTime = currentPageViewController.time {
let currentIndex = indexOftime(currentTime) //need to get it's index
return viewControllerAtIndex(currentIndex + 1)
}
return nil
}
func viewControllerAtIndex(index: Int) -> UIViewController? {
if let time = times?[index] {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("SinglePageViewController") as! SinglePageViewController
vc.time = time
return vc
}
return nil
}
func indexOftime(time: String) -> Int {
return times!.indexOf(time)!
}
func showVC() {
if let firstVC = viewControllerAtIndex(0) {
let viewControllers = [firstVC]
self.setViewControllers(viewControllers, direction: UIPageViewControllerNavigationDirection.Forward, animated: false, completion: nil)
}
}
fatal error: Array index out of range
(lldb) bt
* thread #1: tid = 0x3d6b22, 0x00000001001f04fc libswiftCore.dylib`function signature specialization <Arg[0] = Exploded, Arg[1] = Exploded, Arg[2] = Dead, Arg[3] = Dead> of Swift._fatalErrorMessage (Swift.StaticString, Swift.StaticString, Swift.StaticString, Swift.UInt) -> () + 44, queue = 'com.apple.main-thread', stop reason = EXC_BREAKPOINT (code=1, subcode=0x1001f04fc)
* frame #0: 0x00000001001f04fc libswiftCore.dylib`function signature specialization <Arg[0] = Exploded, Arg[1] = Exploded, Arg[2] = Dead, Arg[3] = Dead> of Swift._fatalErrorMessage (Swift.StaticString, Swift.StaticString, Swift.StaticString, Swift.UInt) -> () + 44
frame #1: 0x00000001000d9810 libswiftCore.dylib`generic specialization <Swift.String> of Swift.Array.subscript.getter : (Swift.Int) -> A + 92
frame #2: 0x000000010001b994 WXModels`WXModels.WxModelPageViewController.viewControllerAtIndex (index=-1, self=0x000000012500da00)(Swift.Int) -> Swift.Optional<__ObjC.UIViewController> + 152 at WxModelPageViewController.swift:50
frame #3: 0x000000010001b570 WXModels`WXModels.WxModelPageViewController.pageViewController (pageViewController=0x000000012500da00, viewController=0x0000000124674840, self=0x000000012500da00)(__ObjC.UIPageViewController, viewControllerBeforeViewController : __ObjC.UIViewController) -> Swift.Optional<__ObjC.UIViewController> + 460 at WxModelPageViewController.swift:36
frame #4: 0x000000010001b630 WXModels`@objc WXModels.WxModelPageViewController.pageViewController (WXModels.WxModelPageViewController)(__ObjC.UIPageViewController, viewControllerBeforeViewController : __ObjC.UIViewController) -> Swift.Optional<__ObjC.UIViewController> + 92 at WxModelPageViewController.swift:0
frame #5: 0x00000001892aa03c UIKit`-[UIPageViewController _viewControllerBefore:viewController:] + 108
frame #6: 0x00000001892afb08 UIKit`-[UIPageViewController _queuingScrollView:viewBefore:view:] + 268
frame #7: 0x00000001892afbf0 UIKit`-[UIPageViewController queuingScrollView:viewBeforeView:] + 64
frame #8: 0x0000000189359c40 UIKit`-[_UIQueuingScrollView _viewBefore:view:] + 108
frame #9: 0x000000018935a3a0 UIKit`-[_UIQueuingScrollView _requestViewForIndex:] + 296
frame #10: 0x000000018935a728 UIKit`-[_UIQueuingScrollView _viewAtIndex:loadingIfNecessary:updatingContents:animated:] + 368
frame #11: 0x000000018935cb84 UIKit`-[_UIQueuingScrollView _adjustContentInsets] + 216
frame #12: 0x000000018935a234 UIKit`-[_UIQueuingScrollView _replaceViews:updatingContents:adjustContentInsets:animated:] + 828
frame #13: 0x000000018935a7dc UIKit`-[_UIQueuingScrollView _viewAtIndex:loadingIfNecessary:updatingContents:animated:] + 548
frame #14: 0x000000018935d930 UIKit`__54-[_UIQueuingScrollView _didScrollWithAnimation:force:]_block_invoke + 124
frame #15: 0x000000018935d74c UIKit`-[_UIQueuingScrollView _didScrollWithAnimation:force:] + 880
frame #16: 0x00000001893592b0 UIKit`-[_UIQueuingScrollView layoutSubviews] + 196
frame #17: 0x0000000188b477ac UIKit`-[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 644
frame #18: 0x0000000188346b58 QuartzCore`-[CALayer layoutSublayers] + 148
frame #19: 0x0000000188341764 QuartzCore`CA::Layer::layout_if_needed(CA::Transaction*) + 292
frame #20: 0x0000000188341624 QuartzCore`CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 32
frame #21: 0x0000000188340cc0 QuartzCore`CA::Context::commit_transaction(CA::Transaction*) + 252
frame #22: 0x0000000188340a08 QuartzCore`CA::Transaction::commit() + 512
frame #23: 0x000000018833a0f8 QuartzCore`CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*) + 80
frame #24: 0x000000018356fbd0 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 32
frame #25: 0x000000018356d974 CoreFoundation`__CFRunLoopDoObservers + 372
frame #26: 0x000000018349ccc0 CoreFoundation`CFRunLoopRunSpecific + 416
frame #27: 0x000000018ea20088 GraphicsServices`GSEventRunModal + 180
frame #28: 0x0000000188bb4ffc UIKit`UIApplicationMain + 204
frame #29: 0x000000010001db90 WXModels`main + 136 at AppDelegate.swift:12
frame #30: 0x00000001992a68b8 libdyld.dylib`start + 4
(lldb)
最佳答案
在 pageViewController(_:viewControllerBeforeViewController:)
(第 3 帧)中,您调用 viewControllerAtIndex(currentIndex - 1)
(第 2 帧),即使 currentIndex
为零,因此您将 -1 传递给 viewControllerAtIndex(_:)
。您应该在 viewControllerAtIndex(_:)
中检查它。应该这样做:
func viewControllerAtIndex(index: Int) -> UIViewController? {
if index < 0 || index >= (times?.count ?? 0) {
return nil
}
if let time = times?[index] {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("SinglePageViewController") as! SinglePageViewController
vc.time = time
return vc
}
return nil
}
关于ios - UIPageViewController Transition Style = Page curl 工作正常,Scroll 抛出索引越界?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33511080/
我以前从未做过任何 curl ,所以需要一些帮助。我试图从示例中解决这个问题,但无法理解它! 我有一个 curl 命令,我可以从 Windows 命令行成功运行该命令,该命令行在 Solr 中索引 p
curl -v有什么区别和 curl -I ? 我可以看到 -v是冗长的和 -I是标题。有什么具体的吗? 最佳答案 -I (大写字母 i)在 curl 中表示“没有正文”,对于 HTTP 表示发送 H
我正在使用curl php API访问FTP链接。在特定站点上,它给出错误代码9(拒绝访问)。但是,可以从IE和Firefox访问该链接。 然后,我运行curl命令行,它给出了相同的“访问拒绝”结果。
我已经使用curl有一段时间了,它可以正常工作,但是使用使用用户'domain\username'来验证curl的代理时,无法请求授权。授权方法是NTLM。此代码放入批处理文件中。 代码: curl
“curl”默认使用哪些证书? 例子: curl -I -L https://cruises.webjet.com.au 在 Ubuntu 15.04 上失败 curl: (60) SSL certi
我知道终端输出的一部分是请求的持续时间,剩余时间等。但是是否有一些文档指定了curl命令的终端输出的每一列到底是什么?手册页上的内容非常稀疏。 最佳答案 可能不容易找到,但已在the curl boo
我想通过 curl 在我自己的云服务器上的特定文件夹中上传文件。例如:http://www.myowncloudserver.com/remote.php/webdav/{MY_FOLDER}。此时我
我的网站上有一个密码保护的Web文件夹,我正在使用Curl在另一个域上获取该文件夹,我想要的是:当我尝试打开URL时,应该问我用户名和密码,而不是让它显示“需要授权”。 例: http://www.e
有没有一种方法可以通过简单的Curl获取Rabbitmq中队列的大小(剩余消息)? 类似于curl -xget http://host:1234/api/queue/test/stats 谢谢 最佳答
关闭。这个问题是opinion-based .它目前不接受答案。 2年前关闭。 锁定。这个问题及其答案是locked因为这个问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我最近开始在我的
我想访问需要用户名/密码的 URL。我想尝试用curl 访问它。现在我正在做类似的事情: curl http://api.somesite.com/test/blah?something=123 我收
我正在尝试使用 CURL 进行查询ElasticSearch 中的命令在windows平台。 例如:localhost:9200/playground/equipment/1?pretty 我收到一条
我正在尝试使用 Docker 构建和运行 Marklogic 实例。 Marklogic 提供了一些不错的 http api,所以,作为最终 CMD在 Dockerfile 中,我运行两个脚本,它们通
我正在尝试通过 cURL 检索网页的内容(比方说 http://www.foo.com/bar.php )。 当我在浏览器中加载网站时,加载页面时会出现动画,页面最终会显示出来。 但是使用 cURL,
我正在尝试使用带代理的命令行 CURL 获取响应状态代码。 这会返回整个页面,但我只想要状态代码。我怎么做?谢谢。 curl -sL -w -x IP:PORT "%{http_code}\n""ht
我有一段代码检查 http/s 端点的状态和加载时间。然后我会为每个顶级页面检查 1 级 href,以检查页面引用的所有内容是否也加载了 200。 (我查了50个顶级页面,每个顶级页面平均有8个链接)
curl --upload-file 和 curl --form file=@/path/file 有什么区别?这些 HTTP 请求有何不同? 最佳答案 --上传文件 (使用 HTTP 或 HTTPS
我正在尝试使用 system-curl 安装 cmake,使用 ./bootstrap --system-curl,如 here 所示.这样做,我得到了: -- Could NOT find
我需要使用 Curl 下载 Youtube 视频的特定部分。 (假设我想下载前 2MB)我在 Curl 中使用 -r 开关来实现这一点。它适用于非 YouTube 链接,但 Youtube 链接会忽略
我希望在使用 curl 命令从远程服务器下载文件后,将时间戳或日期添加到文件名中。我知道您可以使用 -o 来指定您要为文件命名的内容。我看到过这样的建议:-o "somefile $(date +\"
我是一名优秀的程序员,十分优秀!