Как go через массив с нажатием кнопки - PullRequest
0 голосов
/ 01 мая 2020

У меня есть массив, который содержит различную информацию,

, как я могу выполнить итерацию по массиву нажатием кнопки? У меня есть две кнопки, и мне нужно разрешить одной двигаться вперед в массиве и кнопку назад, чтобы отобразить предыдущий индекс.


  @IBOutlet weak var backButton: UIButton!
  @IBOutlet weak var nextButton: UIButton!



 @IBOutlet weak var infoLabel: UILabel!
 @IBOutlet weak var pageControl: UIPageControl!



Let infoArray = ["info1","info2","info3","info4"] 

@IBAction func nextTapped(_ sender: Any) {
// Change the label based on the selected index in array        

}

@IBAction func backTapped(_ sender: Any) {
 //Return to previous index and update label text

}

Я также добавил контроль страницы для лучшего UX, но сейчас я просто волнуюсь, узнавая, как даже изменить метку с помощью кнопки Tap.

Я думаю, что начать индекс на 0, который будет info1 и go оттуда. Я могу беспокоиться о сохранении состояния индекса позже.

Любая помощь очень ценится.

Ответы [ 2 ]

2 голосов
/ 01 мая 2020

Лог c должен выглядеть примерно так

let infoArray = ["info1","info2","info3","info4"]

func viewDidLoad() {
    pageControl.numberOfPages = infoArray.count
    pageControl.currentPage = 0
}

@IBAction func nextTapped(_ sender: Any) {
    // Change the label based on the selected index in array
    guard pageControl.currentPage + 1 < infoArray.count else {
        return
    }
    pageControl.currentPage += 1
}

@IBAction func backTapped(_ sender: Any) {
    //Return to previous index and update label text
    guard pageControl.currentPage - 1 >= 0 else {
        return
    }
    pageControl.currentPage -= 1
}

Когда пользователь касается элемента управления страницы, чтобы перейти на следующую или предыдущую страницу, элемент управления отправляет событие valueChanged для обработки делегат. Затем делегат может оценить свойство currentPage, чтобы определить страницу для отображения. Элемент управления страницы перемещается только на одну страницу в любом направлении.

0 голосов
/ 01 мая 2020

Пожалуйста, проверьте код ниже, вы можете сделать что-то вроде этого, чтобы переместить ваш массив вперед и назад. Пожалуйста, добавьте другие проверки в соответствии с вашими потребностями.

var i = 0
let infoArray = ["info1","info2","info3","info4"]

@IBAction func nextTapped(_ sender: Any) {
    // Change the label based on the selected index in array
   if i >= 0 && i < infoArray.count{
   dataLbl.text = infoArray[i]

    }
    if i > 3 {
        i = i-1
    } else  {
        i = i+1
    }

}

@IBAction func backTapped(_ sender: Any) {
    //Return to previous index and update label text
    if i >= 0 && i < infoArray.count-1 {
    dataLbl.text = infoArray[i]

    }
    if i < 0 {
        i = i+1
    } else  {
       i = i-1
    }

}
...