UITableViewController不加载数据

所以我创build了UITableViewController一个子类,并将委托和数据源设置为自己。 但仍然像cellForRowAtIndexPathnumberOfRowsInSection方法永远不会被调用。我的numberOfSectionsInTableView每次返回1。 这是viewDidLoad()的样子

 - (void)viewDidLoad { [super viewDidLoad]; NSMutableArray* list = [[NSMutableArray alloc] init]; self.tableView = [[UITableView alloc] init]; self.tableView.delegate = self; self.tableView.dataSource = self; self.actionList = list; self.clearsSelectionOnViewWillAppear = NO; self.contentSizeForViewInPopover = CGSizeMake(320.0, 400.0); [self.actionList addObject:@"t1"]; [self.actionList addObject:@"t2"]; } 

当我尝试加载popover时,我所得到的只是一个空白的popover。 这是我在UIPopover中看到的

我在这上面花了很多时间。 请帮我一下

编辑:.m文件

// KLActionsViewController.m #import“KLActionsViewController.h”

 @interface KLActionsViewController () @end @implementation KLActionsViewController @synthesize actionList,delegate; //- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil //{ // self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; // if (self) { // // Custom initialization // } // return self; //} //- (void)loadView //{ // //} - (void)viewDidLoad { [super viewDidLoad]; NSMutableArray* list = [[NSMutableArray alloc] init]; self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320.0, 100.0) style:UITableViewStyleGrouped]; self.tableView.delegate = self; self.tableView.dataSource = self; self.actionList = list; self.clearsSelectionOnViewWillAppear = NO; self.contentSizeForViewInPopover = CGSizeMake(320.0, 200.0); [self.actionList addObject:@"t1"]; [self.actionList addObject:@"t2"]; [self.tableView reloadData]; } - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { NSLog(@"in number of section"); return 1; } - (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } NSString* lab = [self.actionList objectAtIndex:indexPath.row]; // NSLog(lab); NSLog(@"here in there"); cell.textLabel.text = lab; return cell; } - (NSInteger)numberOfRowsInSection:(NSInteger)section { NSLog(@"Total entries : %i ",[self.actionList count]); return [self.actionList count]; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { if (self.delegate != nil) { [self.delegate actionSelected:indexPath.row]; } } - (void)viewDidUnload { [super viewDidUnload]; self.actionList = nil; self.delegate = nil ; // Release any retained subviews of the main view. } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation == UIInterfaceOrientationPortrait); } @end 

.h文件

 #import <UIKit/UIKit.h> @protocol KLActionsViewControllerDelegate - (void)actionSelected:(NSInteger)index; @end @interface KLActionsViewController : UITableViewController <UITableViewDataSource,UITableViewDelegate> @property (nonatomic, retain) NSMutableArray* actionList; @property (nonatomic, assign) id<KLActionsViewControllerDelegate> delegate; @end 

如果你正在扩展UITableViewController它已经在viewDidLoad上创build了UITableView实例。 尝试在那里设置一个断点,并在debugging器控制台中检查它:

 po [self view] 

因此,您现在不应该自己创buildUITableView实例。 如果您需要表视图的自定义初始化,您应该尽早执行

编辑

从文档:

关于基于iOS的应用程序中的表格视图

创build表视图的最简单和推荐的方法是创build一个自定义的UITableViewController对象。 UITableViewController创build表视图并将其自身分配为委托和数据源。

以编程方式创build表视图

如果您select不使用UITableViewController进行表视图pipe理,则必须“免费”复制此类为您提供的内容。

 - (void)loadView // <-- NOT VIEW DID LOAD! { UITableView *tableView = [[UITableView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame] style:UITableViewStylePlain]; tableView.autoresizingMask = UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth; tableView.delegate = self; tableView.dataSource = self; [tableView reloadData]; self.view = tableView; [tableView release]; } 

尝试在viewDidLoad的末尾添加[self.tableView reloadData]

在.h文件中,添加UITableViewDelegateUITableViewDataSource

像这样的东西:

 @interface Yourclass : rootClass <UITableViewDelegate, UITableViewDataSource> 

在.h文件中试试这个

 @interface KLActionsViewController:UIView <UITableViewDelegate,UItableViewDataSource>