2013-06-17 5 views
0

Я следую за этим tutorial и застревает с самой частью начала работы. В этой статье ячейки регистрируются программно. Я все шаги, скачал код и сравнил его мину, но не могу понять проблему
SHCAppDelegate.miOS: ячейки не регистрируются с помощью TableView

@implementation SHCAppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    // Override point for customization after application launch. 
    self.viewController = [[SHCViewController alloc] initWithNibName:@"SHCViewController" bundle:nil]; 
    self.window.rootViewController = self.viewController; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 

SHCViewController.m

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 

     _toDoItems = [[NSMutableArray alloc] init]; 
     [_toDoItems addObject:[SHCToDoItem toDoItemWithText:@"Feed the cat"]]; 
     [_toDoItems addObject:[SHCToDoItem toDoItemWithText:@"Buy eggs"]]; 
     [_toDoItems addObject:[SHCToDoItem toDoItemWithText:@"Pack bags for WWDC"]]; 

     } 
} 
- (void)viewDidLoad:(BOOL)animated 
{ 
    [super viewDidLoad]; 
    self.tableView.dataSource = self; 
    [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"]; 
} 

- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return _toDoItems.count; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSString *ident = @"cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ident forIndexPath:indexPath]; 
    int index = [indexPath row]; 
    SHCToDoItem *item = _toDoItems[index]; 
    NSLog(@"%@",item.text); 
    cell.textLabel.text = item.text; 

    return cell; 
} 

Здесь NSLog внутри tableView:(UITableView *)tableView cellForRowAtIndexPath: не печатает на консоли.

ответ

0

после установки источника данных вызовите метод перезагрузки таблицы как [self.tableview reloadData];

Попробуйте

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.tableView.dataSource = self; 
    [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"]; 
    [self.tableview reloadData]; 
} 
+0

Спасибо. У меня проблема. Это с анимацией viewDidLoad: (BOOL). Когда я только что использовал - (id) viewDidLoad, он работал нормально. Но я не знаю почему? – Navjot

+0

@Navjot Это правильный способ вызова этого метода, обратите внимание, что это isethod в стандартном элементе управления viewController по умолчанию -http: //developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/Reference/Reference.html # // apple_ref/ОКК/instm/UIViewController/viewDidLoad –

Смежные вопросы