0

ポップオーバーで tableViewController を表示したいので、このように TableViewController を作成しました。

@interface ContentViewController :UITableViewController{

}
@end

@implementation ContentViewController

- (id)initWithStyle:(UITableViewStyle)style {
    if ((self = [super initWithStyle:style])) {
        self.contentSizeForViewInPopover = CGSizeMake(100,400);

    }
    return self;
}


- (void)viewDidLoad {
    [super viewDidLoad];
}


- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    // Return the number of sections.
    return 1;
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    // Return the number of rows in the section.
    return 10;
}



- (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] autorelease];
    }
cell.textLabel.text = [NSString stringWithFormat:@"Item %d", [indexPath row]]; 
cell.textLabel.textColor = [UIColor whiteColor];
    return cell;
}

別のViewControllerから、次のようにpopOverでこのtableViewControllerを呼び出しています。

UIViewController *contentViewController = [[ContentViewController alloc]    initWithStyle:UITableViewStylePlain];
self.popoverController = [[popoverClass alloc]    initWithContentViewController:contentViewController] ;
self.popoverController.delegate = self;
CGRect rect = btn.frame;
[self.popoverController presentPopoverFromRect:rect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

init ステートメントを使用して ContentViewController を割り当てている場合、tableView デリゲート メソッドは呼び出されず、popOver には何も作成されません。

このデリゲート メソッドを呼び出す方法。

4

1 に答える 1

1

デリゲートとデータソースが割り当てられる場所を確認してください。

ContentViewControllernibファイルを持っている場合は、データソースを追跡してファイル所有者に委任してください。それ以外の場合initWithStyleは、以下のようにデリゲートとデータソースを設定してメソッドをオーバーライドします。

self.tableView.delegate = self;
self.tableView.datasource = self;

そして contentViewController に伝えると、次のようなテーブルビューコントローラーデリゲートとデータソースメソッドが実装されます

@interface ContentViewController :UITableViewController<UITableViewDelegate, UITableViewDataSource>{

}
@end
于 2013-04-04T12:39:58.393 に答える