2013-10-13 47 views
-1

我有一個Assignment ViewController和一個TableViewController。如何使用委託在2個視圖控制器之間進行通信?

賦值視圖控制器接受輸入並將信息保存在對象中。

我需要的是,使用委託,提醒tableviewcontroller創建了一個賦值,然後讓tableviewcontroller將該對象添加到一個NSMutableArray中,並對其進行存檔。

這似乎很容易,但我很難理解委派。

這裏是保存方法 - AssignmentViewController.m:

- (IBAction)Save:(UIButton *)sender { 
self.homeworkAssignment = [[Homework alloc] init]; 

self.homeworkAssignment.className = self.ClassNameField.text; 
self.homeworkAssignment.assignmentTitle = self.AssignmentTitleField.text; 
self.homeworkAssignment.assignmentDiscription = self.DiscriptionTextView.text; 
self.homeworkAssignment.pickerDate = self.DatePicker.date; 

NSMutableArray *MyHomeworkArray = [[NSMutableArray alloc] init]; 
[MyHomeworkArray addObject:self.homeworkAssignment]; 


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

我保存方法目前保存的信息,增加了一個數組,並存檔。但是我需要在我的TableViewController和我的AssignmentViewController之間使用委託,並且在保存被按下時讓我的tableViewCOntroller發出警報,然後添加到數組並將其自身存檔。

有人可以幫助我使用代表團正確設置它嗎?現在

 
@property (nonatomic,retain) NSMutableArray *homeworkArray; 

保存方法:

+0

你有快照嗎?你到底想做什麼?你想爲你的tableviewcontroller或assignmentviewcontroller創建一個委託嗎? –

+0

@KunalBalani無論何時從其他控制器按下保存按鈕,我都需要提醒TableView。 tableView然後將對象從另一個控制器添加到一個數組並將該數組存檔到一個文件中。我不知道哪一個應該是代表或如何創建它。 – Mike

+0

你不需要委託在這裏..你可以使用[tableView reload]和tableViewController將刷新你的數據 –

回答

0

您數組添加在的UITableViewController財產

 

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

    UITableViewController *tabVC = [[UITableViewController alloc] init]; 
    tableVC.homeworkArray = self. MyHomeworkArray; // send a message to tableview 
    [self.navigationcontroller pushViewController:tableVC]; 
} 

現在TableViewController您需要設置覆蓋您的數據源方法來顯示對細胞

文本
 
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return [self.homeworkArray count]; 
} 


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    // Configure the cell... 
    if(!cell){ 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
    } 
    //update your cell here 
    cell.textLabel.text = self.homeworkAssignment.className 
    cell.detailTextLabel.text = self.AssignmentTitleField.text; 
    return cell; 
} 

+0

tableVC.homeworkArray = self。 MyHomeworkArray; < - 保存方法中的這一行是在控制器之間傳輸數據的內容,我是否正確? – Mike

+0

是的。當您加載視圖控制器時,您需要傳遞數據。 但是,如果tableViewcontroller已經加載,那麼你只需要調用reloadData方法。 –

+0

在保存按鈕被按下時,我應該使用TableView的哪種方法將數組歸檔到文件中? – Mike

相關問題