ios - swift: unexpectedly found nil while unwrapping an Optional value in awakeFromNib() -
i missed something, life of me, can't figure out.
i'm working on app mvc structure; place needed fields on xib, rely on view change font, size, etc.
here's code:
import foundation import uikit protocol productionwellchemistryformtwoviewdelegate { } class productionwellchemistryformtwoview: baseuiview { let fontsizel : cgfloat = 18 let fontname : string = "futura" var delegate : productionwellchemistryformtwoviewdelegate! @iboutlet weak var labeltitle: uilabel! @iboutlet weak var labelfieldcode: uilabel! @iboutlet weak var labelgasflaskno: uilabel! @iboutlet weak var labeldateprepared: uilabel! @iboutlet weak var labeldatevacuumed: uilabel! @iboutlet weak var labelclickingsound: uilabel! @iboutlet weak var labeltimestarted: uilabel! @iboutlet weak var labeltimefinished: uilabel! @iboutlet weak var labelwhpstarted: uilabel! @iboutlet weak var labelwhpended: uilabel! @iboutlet weak var labelsppstarted: uilabel! @iboutlet weak var labelsppended: uilabel! @iboutlet weak var labelspstarted: uilabel! @iboutlet weak var labelspended: uilabel! @iboutlet weak var labelremarks: uilabel! @iboutlet weak var textfieldfieldcode: uitextfield! @iboutlet weak var textfieldgasflaskno: uitextfield! @iboutlet weak var textfielddateprepared: uitextfield! @iboutlet weak var textfielddatevacuumed: uitextfield! @iboutlet weak var textfieldtimestarted: uitextfield! @iboutlet weak var textfieldtimefinished: uitextfield! @iboutlet weak var textfieldwhpstarted: uitextfield! @iboutlet weak var textfieldwhpended: uitextfield! @iboutlet weak var textfieldsppstarted: uitextfield! @iboutlet weak var textfieldsppended: uitextfield! @iboutlet weak var textfieldspstarted: uitextfield! @iboutlet weak var textfieldspended: uitextfield! @iboutlet weak var textviewremarks: uitextview! @iboutlet weak var switchclicksound: uiswitch! override func awakefromnib() { self.labeltitle.font = uifont(name: self.fontname, size: self.fontsizel) self.labelfieldcode.font = uifont(name: self.fontname, size: self.fontsizel) self.labelgasflaskno.font = uifont(name: self.fontname, size: self.fontsizel) self.labeldateprepared.font = uifont(name: self.fontname, size: self.fontsizel) self.labeldatevacuumed.font = uifont(name: self.fontname, size: self.fontsizel) self.labelclickingsound.font = uifont(name: self.fontname, size: self.fontsizel) self.labeltimestarted.font = uifont(name: self.fontname, size: self.fontsizel) self.labeltimefinished.font = uifont(name: self.fontname, size: self.fontsizel) self.labelwhpstarted.font = uifont(name: self.fontname, size: self.fontsizel) self.labelwhpended.font = uifont(name: self.fontname, size: self.fontsizel) self.labelsppstarted.font = uifont(name: self.fontname, size: self.fontsizel) self.labelsppended.font = uifont(name: self.fontname, size: self.fontsizel) self.labelspstarted.font = uifont(name: self.fontname, size: self.fontsizel) self.labelspended.font = uifont(name: self.fontname, size: self.fontsizel) self.labelremarks.font = uifont(name: self.fontname, size: self.fontsizel) self.textfieldfieldcode.font = uifont(name: self.fontname, size: self.fontsizel) self.textfieldgasflaskno.font = uifont(name: self.fontname, size: self.fontsizel) self.textfielddateprepared.font = uifont(name: self.fontname, size: self.fontsizel) self.textfielddatevacuumed.font = uifont(name: self.fontname, size: self.fontsizel) self.textfieldtimestarted.font = uifont(name: self.fontname, size: self.fontsizel) self.textfieldtimefinished.font = uifont(name: self.fontname, size: self.fontsizel) self.textfieldwhpstarted.font = uifont(name: self.fontname, size: self.fontsizel) self.textfieldwhpended.font = uifont(name: self.fontname, size: self.fontsizel) self.textfieldsppstarted.font = uifont(name: self.fontname, size: self.fontsizel) self.textfieldsppended.font = uifont(name: self.fontname, size: self.fontsizel) self.textfieldspstarted.font = uifont(name: self.fontname, size: self.fontsizel) self.textfieldspended.font = uifont(name: self.fontname, size: self.fontsizel) self.textviewremarks.font = uifont(name: self.fontname, size: self.fontsizel) self.textviewremarks.layer.borderwidth = 1.0 self.textviewremarks.layer.bordercolor = uicolor.blackcolor().cgcolor self.textviewremarks.text = "" } } the code throws exception when read first line of awakefromnib(), whatever (i tried commenting out first line, went second).
i've done dozen or times total, i'm not sure what's happening. thing can think of did differently try fix previous unknown class in interface builder file going xib's source code , renaming class productionwellchemistryformtwoviewer, erroneously named class renamed class (no er past view).
the app runs if disable inside awakefromnib().
edit: app runs fine, fonts , all, if change following line in xib source code:
<view contentmode="scaletofill" translatesautoresizingmaskintoconstraints="no" id="vyc-5l-gfd" userlabel="contentview" customclass="productionwellchemistryformtwoview" custommodule="integra_geochemistry" custommoduleprovider="target"> back to:
<view contentmode="scaletofill" translatesautoresizingmaskintoconstraints="no" id="vyc-5l-gfd" userlabel="contentview" customclass="productionwellchemistryformtwoviewer" custommodule="integra_geochemistry" custommoduleprovider="target"> i unknown class _ttc20integra_geochemistry36productionwellchemistryformtwoviewer in interface builder file. error, @ least works.
i'll expand on situation mentioned above, here's happened:
- i created xib.
- i created view, erroneously named
productionwellchemistryformtwoviewer - set xib's class said view.
- found out wrong name.
- changed name
productionwellchemistryformtwoview. errors pop-up. - manually changed reference
productionwellchemistryformtwoviewerproductionwellchemistryformtwoview. - noticed running app produces
unknown classerror, went xib source, removedproductionwellchemistryformtwoviewer. - then got errors above.
so in likelihood didn't link 1 of iboutlets.
with many outlets going confusing figure out one, suggest take @originaluser2's suggestion , use ibcollections.
class productionwellchemistryformtwoview: baseuiview { let fontsizel : cgfloat = 18 let fontname : string = "futura" var delegate : productionwellchemistryformtwoviewdelegate! // declaring iboutlet array tells ib collection @iboutlet var labelcollection: [uilabel]! @iboutlet var textfieldcollection: [uitextfield]! @iboutlet weak var textviewremarks: uitextview! override func awakefromnib() { let font = uifont(name: self.fontname, size: self.fontsizel) labelcollection.each{ $0.font = font } textfieldcollection.each{ $0.font = font } textviewremarks.layer.borderwidth = 1.0 textviewremarks.layer.bordercolor = uicolor.blackcolor().cgcolor textviewremarks.text = "" } } then go through xib , connect outlets needed.
Comments
Post a Comment