2014-03-29 33 views
0

不能爲我的生活弄清楚這一點。顯示來自文本字段中的tableview數據目標C/iOS

所以我創建了一個聯繫列表應用程序,非常類似於iOS7自帶的聯繫人列表應用程序。

  • 用戶在詳細視圖控制器上用GUI創建名稱。
  • 用戶返回到主聯繫人列表頁面(主視圖控制器)
  • 用戶點擊他們剛剛創建
  • 帶來了他們回到視圖控制器名稱/接觸,但它顯示了他們進入文本字段。

用戶用此屏幕開始: enter image description here 用戶點擊添加聯繫人按鈕,在這裏用戶數據,使他們回到第一屏補充說:enter image description here

接下來,他們被帶到第一屏幕,並能夠利用上的接觸,他們已經增加了,應當調出所有輸入的詳細信息(名字,姓氏,電話號碼等):

這裏是我的代碼在我的主視圖控制器:

- (void) detailViewControllerWillDissapear: (DetailViewController *) dvc { 
    NSLog(@"test"); 
    DirectoryEntry *person = [[DirectoryEntry alloc] init]; 

    person.firstName = dvc.txtFirstName.text; 
    person.lastName = dvc.txtLastName.text; 
    person.phoneNumber = dvc.txtPhoneNumber.text; 
    person.address = dvc.txtAddress.text; 

    [self.entries addObject:person]; 

    NSLog(@"index is %@", person.firstName); 
    NSLog(@"count of array %lu", (unsigned long)self.entries.count); 

    dvc.holdData = person; 

    [self.tableView reloadData]; 
} 

這裏是我的賽格瑞:

#pragma mark - segue 
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    //DirectoryEntry *person = [[DirectoryEntry alloc] init]; 

    DetailViewController *dvc = segue.destinationViewController; 
    dvc.delegate = self; 
    if ([segue.identifier isEqualToString:(@"tappedData")]) { 
     NSLog(@"what is the person class have %@", dvc.holdData); 
     // NSLog(@"dvc.holdData = %@", person.firstName); 
    } 
} 

所以我創建了公共變量HOLDDATA這是爲了保持其從陣列到Person類中輸入的所有數據。但是每當我添加它時,都會產生一個空值。我能夠訪問變量,即holdData.firstName,但只是一切都是空的。

有什麼想法?真的很困惑,謝謝。

回答

0

您在prepareForSegue中的dvc幾乎肯定不是您在detailViewControllerWillDissapear方法中使用的對象。 (嘗試打印他們的地址以證明自己。)這意味着要麼您的主控制器應該保存Person數據並在暫緩期間提供它,或者您可以創建一個單獨的數據模型,以便每個DetailViewController將直接使用。

+0

所以我在主視圖控制器中添加了viewdidLoad dvc.holdData = person; 它打印出只有第一個對象,但沒有在其他方法?這是一個公共變量。任何想法爲什麼會發生? – Javanoob33

+0

我甚至不知道爲什麼當你處於主控制器的'viewDidLoad'中時'DetailViewController'會存在。就像我說的那樣,「在賽季中提供它[即人員]」。 –

+0

對不起,我對iOS很新,不確定你提供的是什麼意思?你的意思是創造另一個人的實例嗎? – Javanoob33

相關問題