2011-12-17 61 views
0

私はTroy Brantの「完全なばかのガイドfor iPad & iPhone App Development」(私の問題は第14章「Frenemy」アプリ)で作業している初心者プログラマーです。 Xcode 4.2は公開されていませんでした。この事実と、この本に誤字が詰まっているという事実は、この学習経験を挫折させるものの貴重なものにしています。悲しいかな、私は解決できないような問題に遭遇しました。私はテーブルビューを作成し、それにtwitterユーザー名を設定しました。私は手紙にその本をたどり、著者の「完成した」ソースコードをダウンロードした。実行時には、テーブルビューとナビゲーションバーが表示されますが、テーブルは完全に空です。彼の「完成した」ソースコードを実行すると、まったく同じことが起こります。私の質問は:私は私が収集するために、テーブルを言ったかなければならない...ポピュレートされたテーブルビューにはデータが表示されません

-(void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.title = @"Frenemies"; 

    frenemiesTableView.dataSource = self; 
    frenemiesTableView.delegate = self; 
} 

データを表示するために(例えばupdateInterface、のような)を呼び出すべきである具体的な方法があります...方法は十分ですか?また、updateInterfaceを相対的に呼び出す必要がある場合は、どうすればそのメソッドを定義できますか?私は一週間中このウェブサイトを使用していました。結局、皆さんが今までの大きな答えに私を導くことができたので、私の最初の質問にサインアップしてくださいました。私はどんなアドバイスも大変ありがとうございます。

次は私のFrenemiesViewController.mクラスである:

-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    //following line tells the table to create as many rows as rootUser has frenemies 
    return [rootUser.frenemies count]; 
} 


//give the table view the cell to display for a single row 

- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    //REUSE CELLS FOR BEST SCROLLING PERFORMANCE 
    static NSString *cellId = @"cellId"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId]; 
    if (!cell) 
    { 
     //create a cell only if one couldn't be reused 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellId]; 
    } 

    //DISPLAY FRENEMY'S NAME INSIDE THE CELL 
    NSDictionary *frenemyDict = [rootUser.frenemies objectAtIndex:indexPath.row]; 
    cell.textLabel.text = [frenemyDict objectForKey:@"name"]; 
    return cell; 
} 
+0

質問で忘れてしまった。はい私はFrenemiesViewController.xibファイルが適切な接続を持っていることを確認するために、時間と時間を再度チェックしました。まだダイスはありません。 –

+0

データソースとは何ですか?テーブルをロードする配列がありますか? – WrightsCS

+0

そのコードも貼り付けてください。 – WrightsCS

答えて

0

あなたは私達にあなたのデータソースを示していません。あなたのテーブルには、読み込むためのデータが必要です。

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.title = @"Frenemies"; 

    frenemiesTableView.dataSource = self; 
    frenemiesTableView.delegate = self; 

    someArray = [NSArray arrayWithObjects:@"One",@"Two",@"Three",nil]; 
} 

someArrayのオブジェクトの数を返します。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ 
    return [someArray count]; 
} 

テーブルにロードsomeArray

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];  
    if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
    } 

    cell.textLabel.text = [someArray objectAtIndex:indexPath.row]; 

    return cell; 
} 
+0

この本は、Twitter APIから生の応答が辞書であるため、辞書を使用していると言っています。これは本の出版以来変更されている可能性があります、それは問題を引き起こしているのですか? –

+0

いいえ、辞書を配列に読み込む必要があります。 – WrightsCS

+0

GOT IT!本からダウンロードしたTwitterHelper.mファイルには、fetchFrenemiesForUsernameメソッドが不完全です。ワウは大変な痛みでした。私を助けてくれてありがとう。私はあなたの時間を感謝します。 –

0

あなたがのUITableViewの内容をリロードしたい場合は、-reloadDataメソッドを使用します。

関連する問題