2016-07-21 6 views
1

私はiOS開発の初心者です。初めてのアプリを作成しています。本当に問題が悪い場合はごめんなさい。私はMaster/DetailテンプレートをXcodeで使用し、Core Dataを使用しています。私は、tableViewでカスタムセルスタイルを使用するようにテンプレートを変更しました。ユーザーが何かを追加したいときは、別のビューに切り替えてフォームを完成させます。ユーザーが[保存]をクリックすると、フォームデータがコアデータに保存され、ビューでMasterViewに戻ります。TableViewに挿入すると、カスタムセルが空白になります。アプリを閉じて再度開くときに空白ではない

私の問題は、フォームが保存されると、新しいセルを表示するようにtableViewが更新されますが、断続的に空白になることです。tableView時にはこれが起こります、それ以外の時は起こらないでしょう。アプリスイッチャーからアプリを閉じてもう一度開くまで、セルは空白のままです。

変更することを忘れていますか?助けてくれてありがとう。ここで

は、私は私のカスタムセルスタイルを追加するために、テンプレートに変更の機能は以下のとおりです。

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! CustomTableViewCell 
    let object = self.fetchedResultsController.objectAtIndexPath(indexPath) as! NSManagedObject 
    self.configureCell(cell, withObject: object) 
    return cell 
} 

func configureCell(cell: CustomTableViewCell, withObject object: NSManagedObject) { 

    let imageData: NSData = object.valueForKey("image") as! NSData 
    let picture: UIImage = UIImage(data: imageData)! 
    let date: NSDate 
    let dateFormatter = NSDateFormatter() 
    dateFormatter.locale = NSLocale.currentLocale() 


    cell.cellImage.image = picture 
    cell.locationNameLabel!.text = object.valueForKey("name")!.description 
    cell.categoryLabel!.text = object.valueForKey("category")!.description 

    date = object.valueForKey("date")! as! NSDate 

    dateFormatter.dateStyle = NSDateFormatterStyle.ShortStyle 
    cell.dateLabel!.text = dateFormatter.stringFromDate(date) 


} 

これは私が、私はあなたが必要とするかもしれないと思うFetchedResultsController

func controller(controller: NSFetchedResultsController, didChangeObject anObject: AnyObject, atIndexPath indexPath: NSIndexPath?, forChangeType type: NSFetchedResultsChangeType, newIndexPath: NSIndexPath?) { 
    switch type { 
    case .Insert: 
     tableView.insertRowsAtIndexPaths([newIndexPath!], withRowAnimation: .Fade) 
    case .Delete: 
     tableView.deleteRowsAtIndexPaths([indexPath!], withRowAnimation: .Fade) 
    case .Update: 
     self.configureCell(tableView.cellForRowAtIndexPath(indexPath!)! as! CustomTableViewCell, withObject: anObject as! NSManagedObject) 
    case .Move: 
     tableView.moveRowAtIndexPath(indexPath!, toIndexPath: newIndexPath!) 
    } 
} 

答えて

0

に変更のみの機能ですセルを追加した後、およびテーブルビューに戻るときにデータをリロードすることができます。 self.tableView.reloadData()を使用してテーブル全体をリロードするか、self.tableView.reloadRowsAtIndexPaths(paths, withRowAnimation: UITableViewRowAnimation.None)を使用して特定のセルをリロードすることができます。 私はこれが役に立てば幸い:)

+0

感謝を。私は 'tableView.reloadData()'を使ってみましたが、問題はまだあります。私はまた、viewWillAppearとviewDidLoadメソッドにリロード関数を配置しましたが、どちらも役に立ちませんでした。 –

+0

あなたは、アプリケーションを終了して再度開いたときに、アプリケーションが以前にフォームに入力した正しいデータを取り込んで、セルに正しく入力すると言っていますか? –

+0

はい、アプリを閉じると、情報がセルに表示されます。奇妙なことは、私がアプリを閉じることができない場合、私は上記の写真のような空のセルをクリックすることができ、それが正しい詳細ビューにその情報を持って行くことです。なんらかの理由で、私は閉じて再オープンするまでカスタムセルを表示したくないだけです。 –

関連する問題