2013-10-21 6 views
0

2 개의 컨트롤러, AssignmentViewController 및 UITableViewController가 있습니다. 과제가 만들어지고 저장된 버튼을 클릭 할 때마다 과제 객체를 UITableViewController (위임 사용)에 보내야합니다. TableView 다음 NSMutableArray 파일에 보관해야합니다 (TableView이 응용 프로그램에 대한 보관/보관을 수행해야합니다).보관/보관 위임을 사용하여 TableView에서 데이터를 보관 하시겠습니까?

TableView가로드 될 때마다 배열을 보관 취소하고 숙제 개체를 테이블 셀에 표시해야합니다.

코드가 시작되었지만 실제로 잘못되거나 잘못된 작업을 실제로 알지 못합니다.

앱이이 순서대로 작동해야합니다. 할당 정보를 입력하고 저장 -> 위임을 사용하여 TableViewController에 새 할당 객체 보내기 -> NSMutableArray의 객체를 파일에 보관 -> 테이블보기가 화면에 나타날 때마다 배열을 저장 해제하고 할당 객체를 셀에 표시하십시오.

AssignmentViewController.h

@interface Assignment : UIViewController 

< 
UITextViewDelegate, 
AssignmentTableControllerDelegate 
//Error:Cannot find protocol declaration "AssignmentTableControllerDelegate" 

> 
@property(nonatomic) IBOutlet UITextField *ClassNameField; 
@property(nonatomic) IBOutlet UILabel *ClassNameLabel; 
@property(nonatomic) IBOutlet UITextField *AssignmentTitleField; 
@property(nonatomic) IBOutlet UILabel *AssignmentTitleLabel; 

@property (nonatomic, strong) Homework *homeworkAssignment; 


- (IBAction)Save:(UIButton *)sender; 
@end 

AssignmentViewController.m

- (IBAction)Save:(UIButton *)sender { 


self.homeworkAssignment = [[Homework alloc] init]; 
self.homeworkAssignment.className = self.ClassNameField.text; 
self.homeworkAssignment.assignmentTitle = self.AssignmentTitleField.text; 

//Sending info over to TableController 

self.assignmentTableController.delegate= self; 
self.assignmentTableController.homeworkInTable.className= self.ClassNameField.text; 
self.assignmentTableController.homeworkInTable.assignmentTitle=self.AssignmentTitleField.text; 

AssignmentTABLEController.h

#import "Assignment.h" 

@protocol AssignmentTableControllerDelegate; 


@interface AssignmentTableController : UITableViewController 

@property (nonatomic, strong) Homework *homeworkInTable; 
@property (nonatomic, assign) id <AssignmentTableControllerDelegate> delegate; 
@property (nonatomic,strong) NSMutableArray *MyHomeworkArray; 

-(IBAction)ArchiveData:(id)sender; 

@end 

@protocol AssignmentTableControllerDelegate <NSObject> 

-(NSMutableArray *)UnarchiveData; 
@end 

Assignme : 여기

내가 가진 무엇 ntTABLECONTROLLER.M는

-(void)ArchiveData:(id)sender 
{ 
[self.MyHomeworkArray addObject:self.homeworkInTable]; 


NSString *filePath = [self dataFilePath];//file created 
//Archive my object 
[NSKeyedArchiver archiveRootObject:self.MyHomeworkArray toFile:filePath]; 
} 


-(NSMutableArray *)UnarchiveData 
{ 
Homework *archivedHomework = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath]; 
           //Error:use of undeclared identifier:filePath^^ 

} 

내가 그렇게 내가 잘못 많은 프로그래머 알고이 새로운 오전 (내가 한 모두는이 2 개 개의 메소드를 추가했다). 나는 위임과 함께 AssignmentViewController에서 정보를 올바르게 전달하고 있다고 생각합니다. 하지만 나는 정말로 보관/보관 취소하지 않을 것이라고 확신합니다. 보관/보관 취소 코드를 분리 한 다음 표에 표시하는 방법을 잘 모르겠습니다.

답변

0

몇 가지 아이디어가 도움이됩니다.

1) 프로토콜을 자체 파일에 저장하고 필요에 따라 관련 .h 또는 .m 파일로 가져 와서 모든 경고가 사라지도록하십시오.

2) 새로운 과제가 생기면 테이블보기 컨트롤러로 보내십시오.

3) 테이블보기 컨트롤러는 다음을 가져야합니다. a) 변경 가능한 배열에 삽입하거나 추가 할 수 있습니다. 이 배열은 테이블 자체에서 사용하는 데이터입니다. b) 그런 다음 tableView에 "insertRows ..."를 지정하여 표시하거나 "reloadData"를 사용할 수 있습니다. c) 완료되면 이제 데이터를 보관할 수 있습니다.

관련 문제