我想在单击侧边菜单项之一时更改视图控制器中的背景图像。
我在做这个过程时使用VIP架构。
当侧边菜单上的项目被点击时,下面的代码块工作:
else if indexPath.row == 1
{
switch indexPath.section {
case 0:
print("Any ")
print(indexPath)
case 1:
print("Dark Mode ")
// self.interactor?.selectThemes(theme: "Dark")
router?.changeTheme(theme: .Dark)
case 2:
print("Once a day ")
default:
print("out of range")
}
}
那么我想在路由器上做一些事情:
func changeTheme(theme:Themes){
if Themes.Dark == theme
{
var jokegenerate = JokeGenerateController()
jokegenerate.changeBackground(image: UIImage(named: "duck")!)
//print(theme)
}
}
最后,我想改变viewController中的图像。我的代码如下:
func changeBackground(image: UIImage){
backGroundImage.image = image
print("hey")
}
但是我在这里得到以下错误:致命错误:在隐式展开可选值
时意外发现nil我应该怎么做来修复这个错误?
你应该检查这个链接(委托)
你应该在模块之间建立连接。
class Bakery
{
var delegate:BakeryDelegate?
func makeCookie()
{
var cookie = Cookie()
cookie.size = 6
cookie.hasChocolateChips = true
delegate?.cookieWasBaked(cookie)
}
}
class CookieShop: BakeryDelegate
{
func cookieWasBaked(_ cookie: Cookie)
{
print("Yay! A new cookie was baked, with size (cookie.size)")
}
}
let shop = CookieShop()
let bakery = Bakery()
bakery.delegate = shop
bakery.makeCookie()
差不多。