업데이트 :서로 다른 크기의 2 가지 프로토 타입 셀을 표시하는 방법
다른 경로로갔습니다. 내가하고 싶은 일이있다. 핵심 데이터를 저장하고 tableview의 다른 콘솔에서 볼 수있게 해주는 앱을 디자인하십시오. 일단 tableview 콘솔에, 나는 또한뿐만 아니라 콘솔의 상단에 차트를 볼 수 있습니다.
내가 무슨 짓을 :
는 I는의 UIViewController를 만들어 단지 예로서 그것을 사용하는 이미지 뷰를 통해 드래그. 나는 또한 테이블 뷰, 셀 ... 등을 끌었다.내 문제 :
나는 빈의 tableview 세포를 확인하고 샘플 이미지를 볼 수 있습니다. 핵심 데이터를 저장하고 데이터를보기 위해 돌아 가면 오류가 발생합니다. 나는 데이터 소스와 델리게이트를 구현했지만, 그것을 코드에 넣어야 할 필요가있다.
class ViewMealsViewController: UIViewController, NSFetchedResultsControllerDelegate {
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var menuButton: UIBarButtonItem!
let managedObjectContext = (UIApplication.shared.delegate as! AppDelegate).managedObjectContext
var fetchedResultController: NSFetchedResultsController<MealStats> = NSFetchedResultsController()
override func viewDidLoad() {
super.viewDidLoad()
fetchedResultController = getFetchedResultController()
fetchedResultController.delegate = self
do {
try fetchedResultController.performFetch()
} catch _ {
}
if revealViewController() != nil {
revealViewController().rearViewRevealWidth = 325
menuButton.target = revealViewController()
menuButton.action = #selector(SWRevealViewController.revealToggle(_:))
view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
// MARK:- Retrieve Stats
func getFetchedResultController() -> NSFetchedResultsController<MealStats> {
fetchedResultController = NSFetchedResultsController(fetchRequest: taskFetchRequest(), managedObjectContext: managedObjectContext, sectionNameKeyPath: nil, cacheName: nil)
return fetchedResultController
}
func taskFetchRequest() -> NSFetchRequest<MealStats> {
let fetchRequest = NSFetchRequest<MealStats> (entityName: "MealStats")
let timeSortDescriptor = NSSortDescriptor(key: "mealtype",
ascending: true, selector: #selector(NSString.caseInsensitiveCompare(_:)))
let milesSortDescriptor = NSSortDescriptor(key: "mealname",
ascending: true, selector: #selector(NSString.caseInsensitiveCompare(_:)))
fetchRequest.sortDescriptors = [timeSortDescriptor, milesSortDescriptor]
return fetchRequest
}
// MARK: - TableView data source
func numberOfSections(in tableView: UITableView) -> Int {
let numberOfSections = fetchedResultController.sections?.count
return numberOfSections!
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
let numberOfRowsInSection = fetchedResultController.sections?[section].numberOfObjects
return numberOfRowsInSection!
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
let mealstats = fetchedResultController.object(at: indexPath) as! MealStats
cell.textLabel?.text = mealstats.mealtype
cell.detailTextLabel!.text = mealstats.mealname
return cell
}
// MARK: - TableView Deleteƒ
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
let managedObject:NSManagedObject = fetchedResultController.object(at: indexPath) as! NSManagedObject
managedObjectContext.delete(managedObject)
do {
try managedObjectContext.save()
} catch _ {
}
}
// MARK: - TableView Refresh
func controllerDidChangeContent(_ controller: NSFetchedResultsController<NSFetchRequestResult>) {
tableView.reloadData()
}
}
UIViewController with a sample image for an example
Error I get once I try to view saved core data in the tableview
예, UITableViewController 또는 UIViewController를 테이블보기와 함께 사용할 수 있습니다. 적절한 재사용 식별자를 사용하여 셀을 dequeue합니다. 'heightForRowAtIndexPath'를 구현했는지 확인하십시오. – Paulw11
이 제대로 작동합니까? –
아니,하지만 프로젝트를 변경하고 UITableViewController 대신 UIViewController 함께 갔다 – rahmikg