我正在做这个iPhone项目,我需要在普通视图控制器中有一个(动态)表视图。我没有选择Table View Controller,因为我需要在页面中添加其他内容。想象一个带有文本字段,按钮和大约4-5个单元格的小表视图的页面。
当我运行应用程序时,我需要触摸一个按钮以切换到此视图。我点击按钮,应用程序崩溃并告诉我:
2012-07-22 14:40:57.304多少?[3055:f803] * 断言失败 - [UITableView _createPreparedCellForGlobalRow:withIndexPath:],/ SourceCache / UIKit_Sim / UIKit-1914.84 / UITableView.m:6061
这是我的.H文件:
#import <UIKit/UIKit.h>
@interface ProjectViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
@end
这是我的.M文件:
#import "ProjectViewController.h"
@interface ProjectViewController ()
@end
@implementation ProjectViewController
//MyViewController.m
#pragma mark - Table View Data Source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
NSLog(@"numberOfSectionsInTableView");
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
NSLog(@"numberOfRowsInSection");
return 5;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"cellForRowAtIndexPath");
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
NSLog(@"cellForRowAtIndexPath");
cell.textLabel.text = @"Test";
return cell;
}
@end
我控制 - 从表视图拖动到我的控制器来设置委托和数据源。
我做错了什么?
感谢您的帮助。
答案 0 :(得分:2)
尝试在.h
文件中创建一个插座,并将其连接到tableView
storyboard
<强> ProjectViewController.h 强>
@property (nonatomic, strong) IBOutlet UITableView *myTableView;
<强> ProjectViewController.m 强>
@synthesize myTableView;
...
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"cellForRowAtIndexPath");
UITableViewCell *cell = [self.myTableView dequeueReusableCellWithIdentifier:@"cell"];
NSLog(@"cellForRowAtIndexPath");
cell.textLabel.text = @"Test";
return cell;
}
答案 1 :(得分:0)
在你的-cellForRowAtIndexPath中,如果你这样做,你会没事的。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"cellForRowAtIndexPath");
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
if(cell == nil)
{
cell = [[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:@"cell"];
}
NSLog(@"cellForRowAtIndexPath");
cell.textLabel.text = @"Test";
return cell;
}
问题是您的单元格从未分配和初始化内存。这就是你得到错误的原因。