注释代码已更新,以包含注释中详细说明的修订,但这是原始问题文本:
状态恢复在下面的基于代码的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) 我正在尝试实现此图中间显示的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