2011-05-30 43 views
0

類後:http://mobile.tutsplus.com/tutorials/iphone/iphone-core-data/的UITableView空,甚至稱這裏按照本教程的reloadData

我用的提取記錄方法在我AppNameDelegate.m文件。然後我調用我的tableview重新加載。與鏈接教程不同,我沒有使用UITableViewController。相反,我爲NavigationController添加了一個表視圖,並將它連接到名爲contactsTable的IBOutlet變量。

這裏是我的代碼調用並加載數據:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 

    [self.window addSubview:[self.navigationController view]]; 
    [self fetchRecords]; 
    [self.contactsTable reloadData]; 
    [self.window makeKeyAndVisible]; 
} 

頭文件:

// 
// SimpleContactsAppDelegate.h 
// SimpleContacts 
// 
// Created by Aaron McLeod on 11-05-28. 
// Copyright 2011 __MyCompanyName__. All rights reserved. 
// 

#import <UIKit/UIKit.h> 
#import <CoreData/CoreData.h> 

@interface SimpleContactsAppDelegate : NSObject <UIApplicationDelegate> { 
    NSManagedObjectModel *managedObjectModel; 
    NSManagedObjectContext *managedObjectContext; 
    NSPersistentStoreCoordinator *persistentStoreCoordinator;  
    UIWindow *window; 
    UINavigationController *navigationController; 
    // view for adding new contacts 
    UIViewController *newContactView; 
    UIButton *addButton; 

    // controls for the addContactView 
    UIButton *saveContactButton; 
    UITextField *nameField; 
    UITextField *emailField; 
    UITextField *phoneField; 

    UITableView *contactsTable; 
    NSMutableArray *contactArray; 
} 

@property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel; 
@property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext; 
@property (nonatomic, retain, readonly) NSPersistentStoreCoordinator *persistentStoreCoordinator; 

@property (nonatomic, retain) IBOutlet UIWindow *window; 
@property (nonatomic, retain) IBOutlet UINavigationController *navigationController; 

@property (nonatomic, retain) IBOutlet UIButton *addButton; 
@property (nonatomic, retain) IBOutlet UITableView *contactsTable; 
@property (nonatomic, retain) NSMutableArray *contactArray; 

// controller and fields for the form 
@property (nonatomic, retain) IBOutlet UIViewController *newContactView; 
@property (nonatomic, retain) IBOutlet UITextField *nameField; 
@property (nonatomic, retain) IBOutlet UITextField *emailField; 
@property (nonatomic, retain) IBOutlet UITextField *phoneField; 
@property (nonatomic, retain) IBOutlet UIButton *saveContactButton; 


- (NSString *)applicationDocumentsDirectory; 
- (IBAction) saveContact; 
- (IBAction) switchToAddContactView; 
- (void)fetchRecords; 
- (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView; 
- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section; 

@end 

你可以在這裏找到我的項目的源代碼,以及:https://github.com/agmcleod/SimpleContacts/tree/parttwo如果我離開了代碼你可能需要。謝謝。

+0

我甚至不確定它爲什麼這麼低。我的問題11/13都已經接受了答案。 – agmcleod 2011-05-30 11:15:03

回答

0

reloadData所做的唯一的事情是告訴UITableView詢問其數據源以獲取新數據。這意味着它會打電話給numberOfSectionsInTableView:等。您是否正確設置了這種關係?

對於您的情況,您的SimpleContactsAppDelegate實例應該是您的表視圖的dataSource(在Interface Builder中執行連接)。

考慮在使用Core Data和UITableView時使用NSFetchedResultsController。這允許你不一次加載所有的對象到內存中,等等。Xcode的示例代碼爲此提供了一個很好的起點(我認爲它是具有Core Data模板的基於導航控制器的應用程序)。

+0

感謝您的意見,我一定會檢查一下。 – agmcleod 2011-05-30 13:08:36

+0

這樣做。只需將其指定爲數據源即可。我已經在那裏定義了方法。謝謝。 – agmcleod 2011-05-30 22:06:54