本质上,应用程序的预期功能是让用户在UITextFIEld中键入单词,点击按钮,并将其显示在UItableVIEw上.
当按钮将UITextFIEld条目附加到不同屏幕上的UItableVIEwController时,我从来没有遇到过这样的问题,但由于某种原因我在UIVIEwController上嵌入了UItableVIEw时出现问题…在我的故事板上,我确实将UItableVIEw链接为UIVIEwController的委托和数据源,这应该不是问题.
有任何想法吗?我的代码发布在下面.
import UIKitvar groupList:[String] = []class ExistingGroups: UIVIEwController,UITextFIEldDelegate,UItableVIEwDelegate,UItableVIEwDataSource{@IBOutlet weak var addGroup: UITextFIEld!@IBAction func addGroupbutton(sender: AnyObject) { self.vIEw.endEditing(true) var error = "" if addGroup.text == "" { error = "Please enter a Group!" } else { groupList.append(addGroup.text) } if error != "" { var alert = UIAlertController(Title:"Error In Form",message: error,preferredStyle: UIAlertControllerStyle.Alert) alert.addAction(UIAlertAction(Title:"OK",style: .Default,handler: { action in self.dismissVIEwControllerAnimated(true,completion:nil) })) self.presentVIEwController(alert,animated:true,completion:nil) } addGroup.text = ""}overrIDe func vIEwDIDLoad() { super.vIEwDIDLoad() // Do any additional setup after loading the vIEw,typically from a nib. addGroup.placeholder = "Enter Group name"}overrIDe func dIDReceiveMemoryWarning() { super.dIDReceiveMemoryWarning() // dispose of any resources that can be recreated.}overrIDe func touchesBegan(touches:NSSet,withEvent event:UIEvent){ super.touchesBegan(touches,withEvent: event) self.vIEw.endEditing(true)}func textFIEldShouldReturn(textFIEld: UITextFIEld!) -> Bool // called when 'return' key pressed. return NO to ignore.{ textFIEld.resignFirstResponder() return true;}func tableVIEw(tableVIEw:UItableVIEw,numberOfRowsInSection section: Int) -> Int { return groupList.count}func numberOfSectionsIntableVIEw(tableVIEw:UItableVIEw) -> Int { return 1}func tableVIEw(tableVIEw:UItableVIEw,cellForRowAtIndexPath indexPath:NSIndexPath) -> UItableVIEwCell { var cell:UItableVIEwCell = tableVIEw.dequeueReusableCellWithIDentifIEr("groupcell") as UItableVIEwCell cell.textLabel?.text = groupList[indexPath.row] return cell}}解决方法 首先以这种方式为表视图创建一个IBOutlet:
class VIEwController: UIVIEwController,UItableVIEwDataSource,UITextFIEldDelegate {var groupList = [String]()@IBOutlet weak var addGroup: UITextFIEld!@IBOutlet weak var tableVIEw: UItableVIEw! //<<-- tableVIEw Outlet// Rest of your code..}
之后在vIEwDIDLoad方法中执行此 *** 作:
overrIDe func vIEwDIDLoad() { super.vIEwDIDLoad() self.tableVIEw.registerClass(UItableVIEwCell.self,forCellReuseIDentifIEr: "groupcell") self.addGroup.delegate = self tableVIEw.delegate = self tableVIEw.dataSource = self}
之后,您可以在将元素添加到groupList后重新加载tableVIEw.在这里你可以这样做:
@IBAction func addGroupbutton(sender: AnyObject) { // Your Code } else { groupList.append(addGroup.text) self.tableVIEw.reloadData() } //Your Code}
并更新此功能:
func tableVIEw(tableVIEw: UItableVIEw,cellForRowAtIndexPath indexPath: NSIndexPath) -> UItableVIEwCell{ let cell : UItableVIEwCell = tableVIEw.dequeueReusableCellWithIDentifIEr("groupcell",forIndexPath: indexPath) as UItableVIEwCell cell.textLabel.text = self.groupList[indexPath.row] return cell}
您可以检查我为您创建的最终代码是HERE.
总结以上是内存溢出为你收集整理的ios – 在Swift中的UIViewController中添加UITableView的问题全部内容,希望文章能够帮你解决ios – 在Swift中的UIViewController中添加UITableView的问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)