我是初学者,如果这似乎是一个微不足道的问题,请道歉。
我正在尝试创建一个应用程序,其中每个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"
}
}
}