2017-11-01 5 views
2

タブバーをカスタマイズするためにCustomTopTabbarControllerを作成しました。致命的なエラー:クラスを継承する際にオプション値をアンラッピングしている間に予期せぬエラーが発生しました。

@objcMembers public class CustomTopTabbarController:UITabBarController { 

@IBOutlet weak var customBar: UITabBar! 
public override func viewDidLoad() { 
    super.viewDidLoad() 
    customBar.frame = CGRect(x: 0, y: 0, width: customBar.frame.size.width, height: customBar.frame.size.height) 

} 

public override func viewWillAppear(_ animated: Bool) { 
    super.viewWillAppear(animated) 

} 
} 

私の主なクラスでは、私がCustomTopBarControllerを押すと、tabBarが期待通りに読み込まれます。

CustomTopTabbarController *controller = [CustomTopTabbarController controllerStoryboard:UTILITY]; 

customBar変数がゼロであるので、私はアプリケーションのクラッシュ同じメインクラスから

ReviewController *controller = [ReviewController controllerStoryboard:COURSE]; 

このコントローラーを押した場合、私は、しかしCustomTopBarController

@objcMembers public class ReviewController:CustomTopTabbarController { 
public override func viewDidLoad() { 
    super.viewDidLoad()  
} 

public override func viewWillAppear(_ animated: Bool) { 
    super.viewWillAppear(animated) 

} 
} 

を継承する別のクラスを作成しました。

致命的なエラー:予期せずに私はcustomBarは今、以前に初期化されていない理由を理解することはできませんよオプションの値

にアンラップしながら、nilを見つけ、私はエラーが表示されます。どんなポインタであれ、本当に役に立ちます。

+0

ストーリーボードで行ったことを示してください。 – shallowThought

+0

は適切にフックされていますか? – TechBee

+0

正しくフックされています。それがなければ、CustomTopTabbarControllerを押しても機能しませんでした。 –

答えて

0

新しいシーンをストーリーボードファイルに追加し、そのビューコントローラーのクラスをReviewControllerに変更し、ストーリーボードからロードしようとしました。

このようなことをすれば、すべての店舗をReviewControllerに別々に接続する必要があります。これらの接続はシーン間で継承されません。このため、ビュー・コントローラーの継承は、インターフェース・ビルダーに関してはあまり役に立ちません。

関連する問題