UITableViewController没有调用委托方法

时间:2013-04-04 12:19:24

标签: iphone ios delegates uitableview

我想在popover中创建一个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中没有创建任何内容。

如何调用此委托方法。

1 个答案:

答案 0 :(得分:1)

检查您的委托和数据源分配的位置。

如果ContentViewController有nib文件,则只需跟踪数据源并委托给文件所有者。否则通过设置委托和数据源来覆盖您的initWithStyle方法,如下所示。

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

告诉contentViewController将实现tableview控制器委托和数据源方法,如

@interface ContentViewController :UITableViewController<UITableViewDelegate, UITableViewDataSource>{

}
@end