如何在 UIView 上的滑动操作上显示虚拟数据

问题描述

我有一个 containerView 并且在那个容器视图里面我有 2 个 UILabel(titleLabel 和 detailLabel) 和 1 个 UIImageView(myImage)..我已经向 containerView 添加了 UI swipegesture ......现在我想显示 5 个虚拟数据(文本和图像)当我在 containerView 上滑动时......我已经完成了接下来我应该做什么?

@IBOutlet weak var titleLabel: UILabel!
@IBOutlet weak var detailLabel: UILabel!
@IBOutlet weak var myImage: UIImageView!
@IBOutlet weak var containerVIew: UIView!

var dataArray :[DummyClass] = []
var swipeAction:Int = 0

override func viewDidAppear(_ animated: Bool) 
 {
    leftSwipe()
    rightSwipe()
   
    let DD1 = DummyClass(title: "Tobey",detail: "Lives at russia ",image: "Image1")
    let DD2 = DummyClass(title: "Jessy",detail: "Lives at India",image: "Image2")
    let DD3 = DummyClass(title: "Smith",detail: "Lives at dubai",image: "Image3")
    let DD4 = DummyClass(title: "Mark",detail: "Lives at Australia",image: "Image4")
    let DD5 = DummyClass(title: "Henry",detail: "Lives at America",image: "Image5")

            
    userArray.append(DD1)
    userArray.append(DD2)
    userArray.append(DD3)
    userArray.append(DD4)
    userArray.append(DD5)
}

//MARK:Left Swipe Function
func leftSwipe()
{
    let swipeLeft = UISwipeGestureRecognizer()
    swipeLeft.direction = .left   //up
    self.insideContainerViewSecond.addGestureRecognizer(swipeLeft)
    swipeLeft.addTarget(self,action: #selector(swipe(sender:)))
}

//MARK:Right Swipe Function
func rightSwipe()
{
    let swipeRight = UISwipeGestureRecognizer()
    swipeRight.direction = .right  //down
    self.insideContainerViewSecond.addGestureRecognizer(swipeRight)
    swipeRight.addTarget(self,action: #selector(swipe(sender:)))
}

//MARK: Swipe Function
@objc func swipe(sender: UISwipeGestureRecognizer)
{
    switch sender.direction
    {
    case .left:
        print("swiped left")
        swipeAction = swipeAction+1
    case .right:
        print("swiped right")
        swipeAction = swipeAction-1
    default:
        print("no action")
    }
    if (swipeAction < 0)
    {
        swipeAction = 0
    }
    if (swipeAction>userArray.count - 1)
    {
        swipeAction = userArray.count-1
    }
}

//至displayDummy数据

class DummyClass {

var title:String=""
var detail:String=""
var image:String=""

init()
{
    
}

init(title:String,detail:String,image:String)
{
    self.title=title
    self.detail=detail
    self.image=image
}

}

解决方法

您可以通过以下方式修改滑动功能的最后一部分。

    if (swipeAction < 0) {
        swipeAction = 0
    } else if (swipeAction>userArray.count - 1) {
        swipeAction = userArray.count-1
    } else {
        let user = userArray[swipeAction]
        titleLabel.text = user.title
        detailLabel.text = user.detail
        myImage.image = user.image  // This should be an image though. In your Dummy class its a string
    }

这只是为了让它工作。代码可以重构和优化。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...