【问题标题】:Why my viewcontrollers are not being shown on scrollview controller?为什么我的视图控制器没有显示在滚动视图控制器上?
【发布时间】:2015-10-15 02:24:32
【问题描述】:

我有三步视图控制器。我正在尝试使用滚动视图在单个视图控制器(RegisterViewController)上显示这三个步骤,以便用户可以滑动浏览这些步骤。

我看到了其他一些帖子,并走到了这一步。当我运行应用程序时,我得到一个带有 RegisterViewController 背景颜色的空白屏幕。我在步骤视图控制器中编写了一些 println 语句来检查它们是否被实例化,我可以在控制台上看到这些语句的输出。请问有人可以帮忙吗?

class RegisterViewController: UIViewController {

  @IBOutlet weak var scrollView: UIScrollView!
  @IBOutlet weak var registerStepsPageControl: UIPageControl!

  override func viewDidLoad() {
    super.viewDidLoad()
    setupScrollView()
  }

  func setupScrollView() {
    let storyboard = UIStoryboard(name: "Login", bundle: nil)
    let stepOneViewController = storyboard.instantiateViewControllerWithIdentifier("RegisterStepOne") as! RegisterStepOneViewController
    let stepTwoViewController = storyboard.instantiateViewControllerWithIdentifier("RegisterStepTwo") as! RegisterStepTwoViewController
    let stepThreeViewController = storyboard.instantiateViewControllerWithIdentifier("RegisterStepThree") as! RegisterStepThreeViewController

    var stepViewControllers = [stepOneViewController, stepTwoViewController, stepThreeViewController]

    for index in 0..<stepViewControllers.count {
      self.addChildViewController(stepViewControllers[index])

      let originX: CGFloat = CGFloat(index) * CGRectGetWidth(self.scrollView.frame);
      stepViewControllers[index].view.frame = CGRectMake(originX, 0, self.view.frame.size.width, self.view.frame.size.height);
      stepViewControllers[index].view.frame.size = self.view.frame.size
      self.scrollView.addSubview(stepViewControllers[index].view)
      stepViewControllers[index].didMoveToParentViewController(self)
    }
    self.scrollView.contentSize = CGSizeMake(self.view.frame.size.width * CGFloat(stepViewControllers.count), self.view.frame.height)
    self.scrollView.delegate = self
    self.registerStepsPageControl.numberOfPages = stepViewControllers.count
  }
}

EDIT01: 下面的代码有效。它加载图像并按预期显示它们。但我不知道从其他视图控制器加载视图时可能出现什么问题。

@IBOutlet weak var tutorialStepsPageControl: UIPageControl!

@IBOutlet weak var scrollView: UIScrollView!

var stepImages: [UIImage] = [UIImage(named: "tutorial_image_step1")!, UIImage(named: "tutorial_image_step2")!, UIImage(named: "tutorial_image_step3")!]


override func viewDidLoad() {
  super.viewDidLoad()
  self.tutorialStepsPageControl.numberOfPages = stepImages.count
  setupScrollView()
}

func setupScrollView() {
  var imageFrame: CGRect = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)
  var imageView: UIImageView!

  for index in 0..<stepImages.count {
    imageFrame.origin.x = self.view.frame.size.width * CGFloat(index)
    imageFrame.size = self.view.frame.size

    imageView = UIImageView(frame: imageFrame)
    imageView.image = stepImages[index]
    imageView.contentMode = .ScaleAspectFit
    self.scrollView.addSubview(imageView)
  }

  self.scrollView.contentSize = CGSizeMake(self.view.frame.size.width * CGFloat(stepImages.count), self.view.frame.size.height)
  self.scrollView.delegate = self
}

【问题讨论】:

  • 当您从viewDidLoad 调用它时,可能是帧大小错误。检查调试器中的帧大小。您可能需要从viewWillAppear 运行此代码,以便正确设置框架?不是错误,而是您设置 frame.size 的行对我来说是多余的,因为该值已在前一行设置。
  • 我记得还没有在viewDidLoad中设置几何体,所以试着把它放在viewWillAppear中
  • @EpicDefeater 我认为情况并非如此。我添加了另一个代码 sn-p,它适用于 imageviews 而不是 viewcontrollers。
  • @RoryMcKinnel 是的。该行是多余的,感谢您提醒我删除该行。框架尺寸设置正确,但没有在其上添加视图或其他错误,我无法弄清楚。

标签: ios swift uiviewcontroller uiscrollview uipagecontrol


【解决方案1】:

好的,我删除了步进控制器并从头开始重新添加它们。做了一个干净的构建,现在它正在工作。不知道我做错了什么。 :/

【讨论】:

    【解决方案2】:

    尝试移动线路:

    self.scrollView.contentSize = CGSizeMake(self.view.frame.size.width * CGFloat(stepViewControllers.count), self.view.frame.height)
    

    在这条线上:

    for index in 0..<stepViewControllers.count {
    

    这个问题可能是因为您在发送contentSize 之前添加了子视图。

    【讨论】:

    • 不!它不影响任何事情。我添加了另一个代码 sn-p,它适用于 imageviews 而不是 viewcontrollers。
    猜你喜欢
    • 1970-01-01
    • 2015-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    相关资源
    最近更新 更多