我已经阅读了很多关于这个主题的帖子,但我无法找到解决问题的答案...因此我希望,你可以帮助我:
我有一个带有SplitViewController模板的iPad应用程序。所以RootViewController是UITableViewController的类型。我的数据存储在两个数组中,这些数组由XMLParser(类SyncController)填充。但是tableView没有显示数据...
首先我在AppDelegate中调用解析器:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
// Add the split view controller's view to the window and display.
self.window.rootViewController = self.splitViewController;
[self.window makeKeyAndVisible];
syncController = [[SyncController alloc] init];
[syncController syncData];
return YES;
}
有效。 SyncController正在解析XML,在最后,我有两个填充了我的数据的SyncController的实例变量(NSMutableArrays),我想转移到我的RootViewController:
rootViewController.visitorNames = [[NSArray alloc] initWithArray:self.visitorNames];
rootViewController.visitorCompanies = [[NSArray alloc] initWithArray:self.visitorCompanies];
[rootViewController.tableView reloadData];
reloadData似乎有效:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
NSLog(@"comp count: %u", [self.visitorCompanies count]);
return [self.visitorCompanies count]; }
控制台显示正确数量的元素...... 但是,不会调用cellForRowAtIndexPath
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"testghjgjggjgjggjghjghjghjghjghjghjjhgghj");
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
// Configure the cell.
cell.textLabel.text = [self.visitorCompanies objectAtIndex:indexPath.row];
return cell;
}
没有控制台输出。 所以我在numberOfRowsInSection设置了一个断点来查看实例Variables
它们似乎没问题,但是当你查看tableView的_dataSource时,你会发现有一个无效的摘要......
我认为这就是我的TableView不起作用的原因。
信息:如果我不使用SyncController并在RootViewController的viewDidLoad中使用固定值初始化NSArrays,它可以正常工作
答案 0 :(得分:0)
当你不通过SyncController
加载数据时工作正常,我认为表格视图的数据源工作正常,NSLog()
产生的输出也表明了这一点。
SyncController
一定有问题。您的代码示例是:
rootViewController.visitorNames = [[NSArray alloc]
initWithArray:self.visitorNames];
rootViewController.visitorCompanies = [[NSArray alloc]
initWithArray:self.visitorCompanies];
[rootViewController.tableView reloadData];
此代码发生在SyncController
,不是吗?还有:
// is self instance of SyncController, the app delegate ?
syncController = [[SyncController alloc] init];
// syncController.rootViewController = self.rootViewController ?
[syncController syncData];
在同步数据之前,您不应该设置此属性吗?
否则,如果您的app委托和根视图控制器都具有名为visitorNames
和visitorCompanies
的属性,您应该向syncController
对象发送对您的app委托的引用,以便用一些数据填充数组。
你也可以参考这个问题&答案:invalid summary problem while debugging in Xcode … 希望这会有所帮助。