小编Ton*_*y M的帖子

状态恢复工作但在viewDidLoad中无效

注释代码已更新,以包含注释中详细说明的修订,但这是原始问题文本:

状态恢复在下面的基于代码的ViewController上工作,但是通过第二次调用viewDidLoad它"撤消".我的问题是:我该如何避免这种情况?在断点处,decodeRestorableState我可以看到它实际上确实恢复了2个参数selectedGroup,selectedType然后再次通过viewDidLoad并将这些参数重置为nil,因此恢复无效.没有故事板:如果你将这个类与一个空的ViewController相关联它会起作用(我仔细检查过这个 - 有一些按钮资产,但它们不是函数所需要的).我还在底部包含了启用状态恢复所需的AppDelegate方法.

import UIKit

class CodeStackVC2: UIViewController, FoodCellDel {

  let fruit = ["Apple", "Orange", "Plum", "Qiwi", "Banana"]
  let veg = ["Lettuce", "Carrot", "Celery", "Onion", "Brocolli"]
  let meat = ["Beef", "Chicken", "Ham", "Lamb"]
  let bread = ["Wheat", "Muffin", "Rye", "Pita"]
  var foods = [[String]]()
  let group = ["Fruit","Vegetable","Meat","Bread"]
  var sView = UIStackView()
  let cellId = "cellId"
  var selectedGroup : Int?
  var selectedType : Int?

  override func viewDidLoad() {
    super.viewDidLoad()
    restorationIdentifier = "CodeStackVC2"
    foods …
Run Code Online (Sandbox Code Playgroud)

ios state-restoration swift

2
推荐指数
1
解决办法
754
查看次数

CollectionView在StackView(Swift)中消失

我正在尝试实现此图中间显示的stackView排列:这个数字的中间,但由于某种原因,包含collectionView的顶部堆栈在使用时会消失:.fill distribution

stackView.distribution = .fill        (stack containing collectionView disappears)
stackView.distribution = .fillEqually (collectionView appears fine in stackView)
Run Code Online (Sandbox Code Playgroud)

我已经苦苦挣扎了好几天了,你会在我注释掉的部分看到残留:设置compressionResistance /拥抱优先级,尝试改变内在高度,改变UICollectionViewFlowLayout()的.layout.itemSize等等......没有在我手中工作.如果您只是将其粘贴并将其与空的UIViewController关联,则此处的代码将运行.top,collectionView堆栈包含一个pickerView,下面的堆栈是pageControllView,按钮的subStack和UIView.这一切都在.fillEqually发行版中运行良好,所以这纯粹是一个布局问题.非常感谢!

// CodeStackVC2
// Test of programmatically generated stack views
// Output: nested stack views
// To make it run:
// 1) Assign the blank storyboard VC as CodeStackVC2
// 2) Move the "Is Inital VC" arrow to the blank storyboard

import UIKit

class CodeStackVC2: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate,UICollectionViewDelegateFlowLayout, UIGestureRecognizerDelegate {

  let fruit = ["Apple", "Orange", "Plum", "Qiwi", "Banana"]
  let veg = …
Run Code Online (Sandbox Code Playgroud)

ios uicollectionview uicollectionviewlayout swift uistackview

1
推荐指数
1
解决办法
4721
查看次数