【问题标题】:How to get the detailViewController to display the detailItem of the previous or next row in its masterViewController.tableView in Swift?如何让detailViewController在Swift的masterViewController.tableView中显示上一行或下一行的detailItem?
【发布时间】:2015-04-20 07:46:02
【问题描述】:

所以我正在用 Swift 为 iOS 开发一个图像浏览器。

我从 Internet 下载图片列表,并在属于我的 MasterViewController 的 UITableView 中显示这些图片的详细信息。

通过选择一行,可以获得更大的图片视图,但如果我想要几张连续的图片,我总是必须回到 MasterViewController 并触摸一个新行。

在 Swift 中将当前显示的 detailItem 与上一个或下一个 NSManagedObject 交换的最简单方法是什么?

此时我试图让我的 MasterViewController 成为 detailView 的属性,然后询问它所选行的 IndexPath,然后递增它并强制新对象成为我的 detailViewCotnroller 的 detailItem,但我遇到了崩溃......

如果我也可以使用左右或上下手势浏览图片就更好了。

提前感谢您的帮助。

编辑:我尝试实现以下内容,但没有得到任何结果:

    @IBAction func older() {
        browse(1)
    }

    @IBAction func newer() {
        browse(-1)
    }

    func browse(i: Int) {
        if let o = self.masterViewController?.fetchedResultsController.objectAtIndexPath(indexPath!.indexPathByAddingIndex(i)) as? NSManagedObject {
            self.detailItem=PicWrapper(object: o)
        }
    }

【问题讨论】:

    标签: ios uitableview swift core-data master-detail


    【解决方案1】:

    这里有两个选择:

    1. 将完整的图片列表提供给您的第二个视图控制器。为此,您可以将 NSArray 添加到 detailViewController.h 中,其中包含您需要的所有数据。然后你添加一个滑动手势来循环遍历那个 NSArray
    2. 您在 detailViewController 中创建了一个协议。然后将presentingViewController 设置为detailViewController 的委托。现在您可以添加一个方法,在滑动时,presentingViewController 可以将新数据发送到 detailViewController。

    【讨论】:

    • 谢谢,我会尽快尝试,很可能是第一个版本,我想...我对 Swift 协议不太熟悉..
    • 酷。如果你正在使用 AFNetworking(你应该),有一个名为 AFnetworking+UIImageView 的辅助类,并有一个名为 imageWithUrl 的方法。如果你在你的表格中使用它,然后在你的 detailViewController 中再次使用它,它将为你做很多开箱即用的缓存
    • 嘿,谢谢,但正如我所说:我正在存储安全摄像头图片,因此它们来自受保护的 URL,我已经让我的应用程序来处理这些。
    猜你喜欢
    • 1970-01-01
    • 2020-10-02
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    相关资源
    最近更新 更多