如何在Swift中从类/枚举的不同实例创建多个viewcontroller

时间:2017-08-16 13:44:10

标签: swift class enums

我是初学者,如果这似乎是一个微不足道的问题,请道歉。

我正在尝试创建一个应用程序,其中每个viewcontroller都有一个图像和标签。

总共有10个视图控制器,我宁愿不必在main.storyboard中创建所有10个(即每个视图控制器的硬编码),而是宁愿编码,这样如果我向左滑动(或按下一个按钮)它通过编码加载它。

我制作了2个xcode项目。 1我在每个viewController中使用带枚举的枚举,并使用扩展为每个case添加字符串var和var UIImage。第二个我使用了一个具有text和image属性的类,为每个viewcontroller创建了十个实例并将它们放在一个数组中。

问题1:哪种方法更好? 问题2:如果不对每个viewcontroller进行硬编码,我需要做什么才能让viewcontrollers通过向左滑动或按下下一个按钮(我不介意任何一种方法)来显示?

提前致谢! 以下是我为方法1所做的代码:

import UIKit


class Page: UIViewController {

@IBOutlet weak var image: UIImageView!
@IBOutlet weak var text: UITextField!



var story: Story?

override func viewDidLoad() {
    super.viewDidLoad()

    image.image = Story.page1.image
        text.text = Story.page1.text


}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

}

enum Story {

case page1
case page2
case page3
case page4
case page5
case page6
case page7
case page8
case page9
case page10

}

extension Story {
var image: UIImage {
    switch self {

    case .page1: return #imageLiteral(resourceName: "one")
    case .page2: return #imageLiteral(resourceName: "two")
    case .page3: return #imageLiteral(resourceName: "three")
    case .page4: return #imageLiteral(resourceName: "four")
    case .page5: return #imageLiteral(resourceName: "five")
    case .page6: return #imageLiteral(resourceName: "six")
    case .page7: return #imageLiteral(resourceName: "seven")
    case .page8: return #imageLiteral(resourceName: "eight")
    case .page9: return #imageLiteral(resourceName: "nine")
    case .page10: return #imageLiteral(resourceName: "ten")

    }


  }
  var text: String {
    switch self {
    case .page1: return "This is page 1"
    case .page2: return "This is page 2"
    case .page3: return "This is page 3"
    case .page4: return "This is page 4"
    case .page5: return "This is page 5"
    case .page6: return "This is page 6"
    case .page7: return "This is page 7"
    case .page8: return "This is page 8"
    case .page9: return "This is page 9"
    case .page10: return "This is page 10"
    }


  }



  }

0 个答案:

没有答案