我有一个视图,以这种方式在顶部添加另一个视图:
- (void)showAreaEditView {
NSLog(@"SHOWING AREA EDITOR VIEW");
if (self.thisAreaEditorView == nil) {
// Create View
AreaEditorView *tmpViewController = [[AreaEditorView alloc] initWithNibName:@"AreaEditorView" bundle:nil];
self.thisAreaEditorView = tmpViewController;
[tmpViewController release];
// Hide the back button
self.thisAreaEditorView.navigationItem.hidesBackButton = YES;
}
self.thisAreaEditorView.myInspectionID = self.myInspectionID;
self.thisAreaEditorView.loggedIn = loggedIn;
self.thisAreaEditorView.loggedInGroup = loggedInGroup;
// Slide view up
[self.view addSubview:thisAreaEditorView.view];
CGRect endFrame = CGRectMake(self.view.frame.size.width/2 - thisAreaEditorView.view.frame.size.width/2,
self.view.frame.size.height/2 - thisAreaEditorView.view.frame.size.height/2,
thisAreaEditorView.view.frame.size.width,
thisAreaEditorView.view.frame.size.height);
CGRect startFrame = endFrame; // offscreen source
// new view starts off bottom of screen
startFrame.origin.y += self.view.frame.size.height;
self.thisAreaEditorView.view.frame = startFrame;
// start the slide up animation
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:.6];
thisAreaEditorView.view.frame = endFrame; // slide in
[UIView commitAnimations];
}
我确信你可以忽略幻灯片部分,我觉得addSubview是相关的。
然后在thisAreaEditor中我有了表和按钮之类的视图。 UITableView委托/数据源正常进入文件所有者。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
NSLog(@"numberOfRowsInSection returning %d", [tableData count]);
[tableData count];
}
此函数numberOfRowsInSection返回4
- (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];
}
// Configure the cell...
NSString *thisText = [tableData objectAtIndex:indexPath.row];
cell.textLabel.text = thisText;
NSLog(@"looking at cell %d text:%@", indexPath.row, thisText);
return cell;
}
但是不会调用cellForRowAtIndexPath。
我在这里不知所措,我不知道它看起来如何工作正常,但其中一个委托函数根本就没有被调用。
我已经尝试了[bigTable reloadData]
等等,这个表永远不会被填充,也没有来自函数输出的日志。
提前致谢。
答案 0 :(得分:8)
你可能刚刚编辑了这个,如果有的话我很抱歉,但看起来你忘记了返回tableData的数量。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
NSLog(@"numberOfRowsInSection returning %d", [tableData count]);
return [tableData count];
}
答案 1 :(得分:3)
你好像缺少UITableViewDelegate。
如果您正在使用Interface Builder,请右键单击表格视图插座,然后将delegate
和datasource
拖至File's Owner
。
如果不使用Interface Builder,请在初始化tableView
的位置添加bigTable.delegate = self;
bigTable.dataSource = self;
请记住导入UITableViewDelegate和UITableViewDataSource协议,就像Srikar所说的那样。
希望这对任何帮助。
干杯!
答案 2 :(得分:1)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
。
答案 3 :(得分:0)
也许您没有将tableView委托设置为self或将数据源设置为self。添加此代码&看看它现在是否有效 -
[tableView setDelegate:self];
[tableView setDataSource:self];
同样在您的头文件中继承这些代理 - UITableViewDelegate, UITableViewDataSource
@interface yourViewController: UIViewController <UITableViewDelegate, UITableViewDataSource>
希望这有帮助。
答案 4 :(得分:0)
这是一个较旧的链接,但我想通过提供有关我如何解决此问题的信息来更新此链接。 对我来说问题是填充表的数组有0行,因此从未调用过cellForRowAtIndexPath。 确保用于填充表的数组中包含数据。