0

我在运行时创建一个视图并添加一个 UITableView 作为它的子视图。我还将 tableview 的委托定义为 self 。

但是仍然没有调用 UITableView 代表

@interface cViewController : UIViewController

RouteShowView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
[RouteShowView setBackgroundColor:[UIColor blueColor]];

table = [[UITableView alloc] initWithFrame:CGRectMake(0, 50, 320, 410) style:UITableViewStylePlain];
table.delegate = self;
UIButton * Go = [UIButton buttonWithType:UIButtonTypeRoundedRect];
Go.frame = CGRectMake(0, 4, 70, 42);
[Go setTitle:@"<< BACK" forState:UIControlStateNormal];
[Go addTarget:self action:@selector(goBack) forControlEvents:UIControlEventTouchUpInside];
[Go setBackgroundColor:[UIColor blackColor]];

[RouteShowView addSubview:table];
[RouteShowView addSubview:Go];

[self.view addSubview:RouteShowView]; 
4

3 回答 3

2

假设您在.h文件中添加了UITableViewDelegate、UITableViewDataSource ......我认为您在.m文件中错过了这段代码

table.dataSource = self;
于 2012-08-29T07:20:06.897 回答
1

缺少的东西是

//.h file
@interface SimpleTableView : UITableView <UITableViewDelegate, UITableViewDataSource>
{
}
@end

// in .m file
table = [[UITableView alloc] initWithFrame:CGRectMake(0, 50, 320, 410) style:UITableViewStylePlain];

// set delegated object
table. delegate = self;

// set source for data
table.dataSource = self;

并实现在 UITableView 文档下定义的 @required 协议

@protocol UITableViewDataSource<NSObject>

@required

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
于 2012-08-29T08:26:56.300 回答
0

首先尝试通过 xcode 上的代码完成来检查委托方法,如果您在类中获得了正确的委托,xcode 会自动检测您的委托方法。

我猜你可能不会被宣布

@interface SimpleTableView : UITableView <UITableViewDelegate, UITableViewDataSource>
于 2012-08-29T05:36:47.070 回答