uitableview - UITableViewCell in Swift -
this sample code uitableviewcontroller
, coredata
. main file maintableviewcontroller.swift
:
import uikit import coredata class maintableviewcontroller: uitableviewcontroller { var results:addrbook[]=[] init(style: uitableviewstyle) { super.init(style: style) } init(coder adecoder: nscoder!) { super.init(coder: adecoder) } override func viewdidload() { super.viewdidload() } override func didreceivememorywarning() { super.didreceivememorywarning() } override func viewdidappear(animated: bool) { allow request = nsfetchrequest(entityname: "person") request.returnsobjectsasfaults = false allow appdelegate:appdelegate = (uiapplication.sharedapplication().delegate appdelegate) allow context:nsmanagedobjectcontext = appdelegate.managedobjectcontext results = context.executefetchrequest(request, error: nil) addrbook[] self.tableview.reloaddata() } override func numberofsectionsintableview(tableview: uitableview?) -> int { homecoming 1 } override func tableview(tableview: uitableview?, numberofrowsinsection section: int) -> int { homecoming results.count } override func tableview(tableview: uitableview!, cellforrowatindexpath indexpath: nsindexpath) -> uitableviewcell! { var cell = tableview.dequeuereusablecellwithidentifier("cell") as? uitableviewcell if !cell { cell = uitableviewcell(style: uitableviewcellstyle.default, reuseidentifier: "cell") } cell!.textlabel.text = results[indexpath.row].lastname + " " + results[indexpath.row].firstname homecoming cell } override func prepareforsegue(segue: uistoryboardsegue!, sender: anyobject?) { var indexpath = self.tableview.indexpathforselectedrow() allow destviewcontroller:detailviewcontroller! = segue.destinationviewcontroller detailviewcontroller if segue.identifier == "editperson" { destviewcontroller.receivedperson = results destviewcontroller.indexpath = indexpath } } }
if in cellforrowatindexpath
utilize this:
cell!.textlabel.text = results[indexpath.row].lastname + " " + results[indexpath.row].firstname
then good. if utilize this:
cell!.textlabel.text = results[indexpath.row].lastname cell!.detailtextlabel.text = results[indexpath.row].firstname
i see error: can't disclose optional.none
what's wrong? help, please.
just in case codes of other classes
class uiviewcontroller
add together , edit records (detailviewcontroller.swift
):
import uikit import coredata class detailviewcontroller: uiviewcontroller { @iboutlet var currentoperation : uilabel = nil @iboutlet var firstnamefield : uitextfield = nil @iboutlet var lastnamefield : uitextfield = nil var indexpath = nsindexpath() var receivedperson:addrbook[]=[] init(nibname nibnameornil: string?, bundle nibbundleornil: nsbundle?) { super.init(nibname: nibnameornil, bundle: nibbundleornil) } init(coder adecoder: nscoder!) { super.init(coder: adecoder) } override func viewdidload() { super.viewdidload() if !receivedperson.isempty { // if selected row in tableview in maintableviewcontroller currentoperation.text = "edit person" firstnamefield.text = receivedperson[indexpath.row].firstname lastnamefield.text = receivedperson[indexpath.row].lastname } else { // if pressed "+" in maintableviewcontroller currentoperation.text = "add person" } } override func didreceivememorywarning() { super.didreceivememorywarning() } @ibaction func savebutton(sender : anyobject) { allow appdelegate:appdelegate = (uiapplication.sharedapplication().delegate appdelegate) allow context:nsmanagedobjectcontext = appdelegate.managedobjectcontext if receivedperson.isempty { // if pressed "+" in maintableviewcontroller allow projectentity = nsentitydescription.entityforname("person", inmanagedobjectcontext: context) var newperson = addrbook(entity: projectentity, insertintomanagedobjectcontext: context) newperson.lastname = lastnamefield.text newperson.firstname = firstnamefield.text } else { // if selected row in tableview in maintableviewcontroller receivedperson[indexpath.row].firstname = firstnamefield.text receivedperson[indexpath.row].lastname = lastnamefield.text } context.save(nil) self.navigationcontroller.popviewcontrolleranimated(true) } }
class addrbook.swift
coredata:
import uikit import coredata @objc(addrbook) class addrbook: nsmanagedobject { @nsmanaged var lastname:string @nsmanaged var firstname:string }
solved. use
cell = uitableviewcell(style: uitableviewcellstyle.value1, reuseidentifier: "cell")
instead
cell = uitableviewcell(style: uitableviewcellstyle.default, reuseidentifier: "cell")
uitableview core-data swift ios8
No comments:
Post a Comment