- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个继承自 BaseViewController.swift
的类。我已经为核心数据更改跟踪定义了一个标志:
var coreDataUpdated: Bool?
我还在 BaseViewController.swift
的 viewWillAppear
中添加了核心数据变化的观察者
//Core data update
NotificationCenter.default.addObserver(self,
selector: #selector(self.CoreDataUpadated),
name: .NSManagedObjectContextObjectsDidChange,
object: nil)
现在,每当我通知核心数据发生变化时,我都会将 coreDataUpdated
变量更改为 true
@objc func CoreDataUpadated() {
self.coreDataUpdated = true
}
现在在 viewDidAppear
中的 ChildViewController.swift
中,当我检查 coreDataUpdated
时,它返回给我 nil
这是我的完整代码:
class BaseViewController: UIViewController {
var coreDataUpdated: Bool?
override func viewWillAppear(_ animated: Bool) {
//Core data update
NotificationCenter.default.addObserver(self,
selector: #selector(self.CoreDataUpadated),
name: .NSManagedObjectContextObjectsDidChange,
object: nil)
}
func CoreDataUpadated() {
self.coreDataUpdated = true
}
}
class ChildViewController: BaseViewController {
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
reloadData()
}
func reloadData() {
if super.coreDataUpdated ?? false { //I always get nil for
super.coreDataUpdated
tableView?.reloadData()
}
}
}
注意:我正在使用 swift 4 开发 Xcode 9 beta 5 和 iOS 11。但是,这段代码在 Xcode 8 和 iOS 10.3 上使用 swift 3 运行良好。
最佳答案
类继承并不意味着子类实例继承父类(super class)实例中分配给属性的值。
您有一个 BaseViewController
实例,它有一个 coreDataUpdated
属性,还有一个 ChildViewController
实例,它有一个 coreDataUpdated
> 属性,因为它继承自 BaseViewController
,但它的属性值与 BaseViewController
实例属性值无关;它们是不同的对象。
当您说 self.coreDataUpdated = true
时,您是在 BaseViewController
实例 上设置属性。
当您说 super.coreDataUpdated
时,您指的是 ChildViewController
实例 中的 coreDataUpdated
属性由它的父类(super class)定义;由于此属性从未被赋值,因此它是 nil
。
由于 ChildViewController
没有覆盖 coreDataUpdated
super.coreDataUpdated
在实例中与 self.coreDataUpdated
相同ChildViewController
,因此您可以将 if
语句重写为:
func reloadData() {
if self.coreDataUpdated ?? false {
tableView?.reloadData()
}
}
希望这能让你更清楚为什么 coreDataUpdated
是 nil
与使用您自己的 Bool
相比,检查您的 NSManagedObjectContext
实例的 hasChanges
属性可能更简单。
关于ios - 未为 ChildViewController 更新父变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45811257/
我在 iOS/Swift 中遇到 childViewController 的多级层次结构问题。当前设置从最低到最高分为三层: InfoViewController SelectionViewContr
我已添加一个 View 作为 ChildViewcontroller,并且我只想在 ChildViewController 中关闭它并转到上一个 ViewController 来自 ParentVie
我有一个来自 Realm 的对象,我将每个控件分配给对象,我想要的是将每个 childVC 上分配的每个对象传递给下一个 childVC。 我在 UIPageViewcontroller 上初始化了该
我有一个看起来像这样的父/ subview Controller 系统 -- (Parent) RootViewController -- (Child) ChildController
最新更新:我创建了一个全新的项目,其构建方式与下面完全相同。然而,这个测试项目实际上工作得很好,即使它看起来是一样的......我注意到的一件事是损坏版本中的父 View Controller 正在接
我尝试实现左侧面板,但是当我实现时,它似乎除了容器之外不会显示任何内容。 下面是我的代码: override func viewDidLoad() { super.viewDidLoad()
我有一个继承自 BaseViewController.swift 的类。我已经为核心数据更改跟踪定义了一个标志: var coreDataUpdated: Bool? 我还在 BaseViewCont
我有一个 pageViewController (UIPageViewController),它有一个 subview Controller (名为 soundPlayer)。声音播放器有静态 AVA
我在 UICollectionViewController 上有一个 childViewController。我有所以我的 childViewController 出现在屏幕上。但是当我注册一个单元格
我在我的 iOS 应用程序中创建了一个汉堡包菜单。 我的 rootViewController 中有一个 navigationBar 但现在我需要将 navigationBar 移动到我的 child
好吧,希望我能解释得尽可能清楚。 我有一个 Parent ViewController,它有一个 ContainerView,它将包含不同的 viewControllers/Class。我正在像这样在
我有一个 View Controller ,其中有一个按钮和一个窗口。 按下按钮,窗口中的 View 应该改变。 窗口中的 View 是另一个 ViewController 及其 View 。 当按下
我正在使用 XLPagerTabStrip在 Swift 4 中创建一个基于类别的阅读应用程序。我了解到可以使用以下函数轻松创建静态数量的 ViewController。 override func
在实现与 subview Controller 连接的 View 容器时,我偶然发现了一个奇怪的问题。 层次结构如下: 我有一个 UISplitViewController,在 MasterViewC
我有一个 ViewController,它有添加按钮,该按钮将在屏幕右侧打开 SideBarVC。如果我再次点击主 ViewController 屏幕,它应该关闭我的 SideBarVC。 我试过了
我在我的 MainViewController 中放置了一个容器。然后在该容器内添加FirstViewController let containerView = UIView() view.addS
我有一个 ViewController,我可以像这样在其中添加许多 child : [self addChildViewController:myViewController]; 在此
这个问题在这里已经有了答案: Passing data between view controllers (45 个答案) 关闭 8 年前。 我有 2 个 View ,ParentViewContr
我正在尝试在 iPad 上从使用 UIPopoverController 切换到 ChildViewControllers。我们有 4 或 5 个 VC 在父导航 subview Controller
我有一个 UIPageViewController,它有三个 childViewController。这些 childViewControllers 正在显示图表,每 5 秒使用从网络连接获取的动态数
我是一名优秀的程序员,十分优秀!