【问题标题】:Swipe to display a second picture in new viewcontroller滑动以在新视图控制器中显示第二张图片
【发布时间】:2019-02-20 21:14:36
【问题描述】:

我的应用程序显示了一个表格视图,该视图将在新的 ViewController 上打开并显示一张图片。我能够将一组图片发送到新控制器,但我不知道如何滑动以显示作为已发送数组一部分的第二张图片。我的代码如下:

var firstchoice: [UIImage] = [
    UIImage(named: "Appa1")!,
    UIImage(named: "Appa2")!
]




func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
    ///Right way here
    ///You can easily manage using this
    let Vc = self.storyboard?.instantiateViewController(withIdentifier: "imageViewController") as! imageViewController



    ///Here you have written four Animal names in Array
    ///So There is going to four case 0,1,2,3 and a default case
    switch indexPath.row
    {
    case 0:
        Vc.passedArray = firstchoice
        self.navigationController?.pushViewController(Vc, animated: true)
        break;

imageViewController 代码:

class imageViewController: UIViewController,GADBannerViewDelegate, UIGestureRecognizerDelegate, UIScrollViewDelegate {

    var bannerView: GADBannerView!



    @IBOutlet weak var scrollView: UIScrollView!
    @IBOutlet weak var myImageView: UIImageView!


    @IBAction func pictureSwipe(sender: UISwipeGestureRecognizer) {

        let pictureString:String = self.passedArray[index]
        self.myImageView.image = passedArray.first

        index = (index < passedArray.count-1) ? index+1 : 0
    }

    var passedImage : UIImage! = nil
    var passedArray : [UIImage]!

    var index = 0

    override func viewDidLoad(){
        super.viewDidLoad()
        self.myImageView.image = passedArray.first
        self.navigationController?.navigationBar.isHidden = false

        scrollView.minimumZoomScale = 1.0
        scrollView.maximumZoomScale = 5.0

【问题讨论】:

  • 你可以使用 NSUserDefaults
  • 只是为了评论你的代码整体,你真的可以整理你的 tableViewDidSelectRow 函数。将您的图像存储在一个数组中,并使用从 indexPath.row 获得的索引从数组中选择您想要的图像。至于如何添加多个功能,您可以通过创建图像数组来解决。 [[img1], [img2, img2a], [img3, img3a, img3b]], etc.. 你可以从 indexPath.row 中获取特定的数组并将其传递给下一个 VC。就像另一个答案说的那样,您可以将其设为 UIPageController,或者您可以创建一个集合视图来显示图像

标签: ios swift uitableview uiimageview


【解决方案1】:

您可以将您的第二个视图控制器设置为 UIPageController,它具有内置的swiping 功能。然后您只需为所选图像提供一组图像和一个currentIndex。然后用户可以滑动浏览其他相关图像。如果愿意,您还可以添加UIPageControl,以向用户显示还有更多可用的图像。

我建议在您的代码中的 didSelect 方法中进行一些改进:

  1. 在switch语句后调用self.navigationController?.pushViewController(Vc, animated: true)防止代码重复
  2. 为图像使用数组,然后您可以在 indexPath.row 中选择图像
  3. 一旦你有了这个数组,你就可以将整个数组和 indexPath 传递给你的第二个 vc

【讨论】:

  • 感谢您的回复,这是非常好的见解。但是,我的代码在发送我声明为“第一选择”的图像数组作为测试时遇到了麻烦。你知道我做错了什么吗?
  • 你能更新你的问题并在底部添加你当前的代码吗?
  • 更新了新代码。我想出了如何将数组发送到 viewcontroller,但似乎无法让我的滑动功能代码正常工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多