我有SplitView
:
<SplitView Name="splitView"
DisplayMode="{Binding SplitViewDisplayMode}"
IsPaneOpen="{Binding SplitViewIsPaneOpen}"
OpenPaneLength="200" CompactPaneLength="51"/>
我也在使用VisualStateManager
根据应用程序窗口大小调整SplitView
:(示例)
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="500"></AdaptiveTrigger>
</VisualState.StateTriggers>
到目前为止一切正常,但是当上面的触发器和下面的状态被激活时,我遇到了意外的结果。
<VisualState.Setters>
<Setter Value="True" Target="splitView.IsPaneOpen"></Setter>
<Setter Value="Overlay" Target="splitView.DisplayMode"></Setter>
</VisualState.Setters>
我似乎无法找到检测事件的方法,以便ViewModel
知道SplitView
窗格焦点何时丢失。现在,设计覆盖显示,直到用户点击视图(按设计),但我想知道,当SplitView
叠加层折叠时,我可以将其他绑定事件添加到我的HamburgerMenu
根据我的体验,VisualStateManager
似乎没有更新/更改我的绑定
DisplayMode="{Binding SplitViewDisplayMode}"
关于如何/何时覆盖消失/关闭的任何想法?
我唯一能想到的是创建发现窗口大小的方法,然后确定SplitView应该是Inline
/ Compact
/ Overlay
..这是可行的但会产生很多潜在的组合。
当用户点击SplitView
之外的控件时,有关Overlay
如果Collapsed
SplitView
phSelfie
是否为import UIKit
import Firebase
class SeeSelfieViewController: UIViewController {
var storage = FIRStorage.storage()
@IBOutlet var phSelfie: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
let gsRef = storage.reference(forURL: "gs://******-****.appspot.com/profileUsers/")
let user = FIRAuth.auth()!.currentUser!
let imageRef = gsRef.child("\(user.uid).jpg")
imageRef.data(withMaxSize: 1 * 1024 * 1024) { (data, error) in
if error != nil {
print("\(error?.localizedDescription)") <------ This run the error!!
} else {
let imageSelfie = UIImage(data: data!)
self.phSelfie.image = imageSelfie
print("Succes")
}
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
的任何想法或想法?
答案 0 :(得分:1)
要使绑定有效,您必须将它们指定为双向绑定。如果没有这个,他们只会使用代码更改来更新UI,而不是相反:
<SplitView Name="splitView"
DisplayMode="{Binding SplitViewDisplayMode, Mode=TwoWay}"
IsPaneOpen="{Binding SplitViewIsPaneOpen, Mode=TwoWay}"
OpenPaneLength="200" CompactPaneLength="51"/>
现在,只要状态发生变化,您的属性就会正确更新。