我有两个ViewController
。首先是 MoviesVC
,它显示电影列表。第二个是 BookmarkedVC
,它显示用户添加书签的电影。
我在 MoviesVC
中有 movies:[Movie]
属性。 Movie
类有一个 bookmark = false
标志来确定电影是否已添加书签。当用户单击单元格上的书签按钮时,我将标志更新为 true
。
由于 BookmarkedVC
也显示了已添加书签的电影列表,因此我继承了 BookmarkVC: MoviesVC
。
在 BookmarkedVC
viewWillAppear()
方法中,我通过调用下面的函数来获取添加书签的电影
func loadBookmarkedMovie() -> [Movie] {
let bookmarkedMovies = self.movies.filter { return $0.bookmark == true }
return bookmarkedMovies
}
问题是 self.movies
的 bookmark
仍然是 false
,尽管它们已添加书签。
为了确保这一点,我在为一些电影添加书签后,在 MoviesVC
中调用 loadBookmarkedMovie()
,它实际上返回了已添加书签的电影,但在 BookmarkedVC
中> 它返回nil
最佳答案
由于 Inheritance您只能获取 Super Class 的属性( functions
和 variables
)。
所以如果你继承 MoviesVC
。 。
- 现在
BookmarkVC
有movies:[Movie]
(假设movies
在声明时已初始化)。 - 所有
bookmark == false
(默认false
因为您尚未在BookmarkVC
中更新书签)
所以。 。 func loadBookmarkedMovie()
肯定会返回 nil
。要将数据从 MoviesVC
传递到 BookmarkedVC
,您只需使用 Segue或Delegate .
关于ios - 在 Swift 中从子类访问父类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46418274/