2012-01-04 21 views
1

私はグーグルで、ここでstackoverflowを検索しましたが、解決策を見つけることができませんでした。私が起こることを期待何なぜ私のUITableViewディスプレイは表示されませんか?

: "こんにちは"

を含むのUITableViewを表示するには、ショーの細胞何が起こる:のUITableViewはさえ

viewViewController.h

#import <UIKit/UIKit.h> 

@interface viewViewController : UIViewController 

@property (strong, nonatomic) IBOutlet UITableView *tableView; 
//note: the above property is connected to my UITableViewController 

@end 
は表示されません。

viewViewController.m

#import "viewViewController.h" 

@interface viewViewController() 

@end 

@implementation viewViewController 
@synthesize tableView = _tableView; 

- (UITableView *)tableView 
{ 
    if (!_tableView){ 

     _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped]; 
    } 
    return _tableView; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 


    //_tableView = [[UITableView alloc] init]; 
    // Do any additional setup after loading the view, typically from a nib. 
} 

- (void)viewDidUnload 
{ 
    //[self setTableView:nil]; 
    [super viewDidUnload]; 
    // Release any retained subviews of the main view. 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); 
} 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    //warning Potentially incomplete method implementation. 
    // Return the number of sections. 
    return 2; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    NSLog(@"asking for rows"); 
    //#warning Incomplete method implementation. 
    // Return the number of rows in the section. 
    switch (section) 
    { 
     case 0: 
      return 5; 
     case 1: 
      return 10; 
      break; 
     default: 
      return 0; 
      break; 
    } 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
     cell.selectionStyle = UITableViewCellSelectionStyleNone; 
    } 
    cell.textLabel.text = @"hi"; 
    return cell; 

} 

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 
{ 
    return @"testtext"; 
} 


@end 

私が間違ったことを教えてください、私のコードを修正してください。

答えて

5
  1. あなたのビューコントローラにいくつかのプロトコルを追加します。

    @interface viewViewController:あなたはtableViewからのファイルの所有者にdelegatedatasource性質を接続していることを確認するためのUIViewController

  2. チェックを。

+0

FileOwnerはどういう意味ですか?申し訳ありませんが、私はこれでちょっと新しいです。 – blake305

+0

また、私がストーリーボードを利用している場合は、ストーリーボードを使用しています。 – blake305

+0

@ blake305彼はプロトコルメソッド、つまりあなたのケースではviewViewControllerであるデリゲートを実装しようとする人を意味します。 ViewViewControllerの 'viewDidLoad'にStoryboardを使ってデリゲートを接続できない場合は、ヘッダーにプロトコルを含めると仮定して、' _tableView.delegate = self'と '_tableView.dataSource = self'を実行してください:' @interface viewViewController:UIViewController ' – Jeremy

0

UIViewControllerの代わりにUITableViewControllerをサブクラス化してみてください。

+0

説明はありますか?私はUITableViewControllerを持っていません。私はUIViewControllerにUITableViewを持っています。なぜなら、私がやっていることに利益をもたらすからです。 – blake305

+0

申し訳ありません。 UITableViewControllerの代わりにUIViewControllerを使用する必要がある場合、Tomaszの答えは正しいと思います。 Tomasz氏に​​よると、UITableViewDelegateとUITableViewDataSourceの代理人である必要があります。 – dean

1

あなたのインスタンス変数に接続されているUITableViewの意味ははっきりしません。あなたがXIBから配線されたことを意味するならば、おそらくあなたが作成したオーバーライドされたゲッターメソッドから "干渉"を得るでしょう。そのメソッドが呼び出されているかどうかを調べるには、NSlogを置くことができます。その場合、割り当て/招待している新しいテーブルビューのフレームのサイズはゼロで、フレームサイズを変更するコードのどこにも表示されません。

幸運!

+0

' - (UITableView *)tableView {'の直後にNSLogを実行しましたが、呼び出されませんでした。私は何をすべきか? – blake305

+0

次に、tomasz-wojtkowiakのアドバイスに従い、さまざまなUITableViewプロトコルとデータソースメソッドを実装していることを確認してください。 – timthetoolman

関連する問題