在自定义 UIview 中设置 UItableview 的委托和数据源
Posted
技术标签:
【中文标题】在自定义 UIview 中设置 UItableview 的委托和数据源【英文标题】:set delegate and data source of UItableview in custom UIview 【发布时间】:2014-09-01 04:46:39 【问题描述】:我有一个自定义的UIView
,它有几个不同的视图,还有一个UITableview
。
我创建了一个自定义类,它是UITableViewController
的子类。这将控制UITableview
和UITableView
的原型单元。
如果我将 delegate 和 datasource 设置为父视图,我会收到以下错误:
-[RoadSafetyAppViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x10c92f190
其中 RoadSafetyAppView Controller 是父视图。但是,如果我根本不设置委托和数据源,我的表不会加载我在自定义类中声明的图像,如下所示:
@implementation MenuController
@synthesize menuArray;
-(void) viewDidLoad
[super viewDidLoad];
self.menuArray = [NSMutableArray arrayWithCapacity:4];
[menuArray addObject:[UIImage imageNamed:@"Dob in a Hoon menu.png"]];
[menuArray addObject:[UIImage imageNamed:@"Report a Hazard menu.png"]];
[menuArray addObject:[UIImage imageNamed:@"Old Logo menu.png"]];
[menuArray addObject:[UIImage imageNamed:@"Council Website menu.png"]];
-(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView
return 1;
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
return [self.menuArray count];
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *CellIdentifier = @"CellIdentifier";
MenuCustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell.menuImage.image =[UIImage imageNamed:@"Dob in a Hoon menu.png"];
switch (indexPath.row)
case 0:
cell.menuImage.image =[UIImage imageNamed:@"Dob in a Hoon menu.png"];
break;
case 1:
cell.menuImage.image =[UIImage imageNamed:@"Report a Hazard menu.png"];
break;
case 2:
cell.menuImage.image =[UIImage imageNamed:@"Old Logo menu.png"];
break;
case 3:
cell.menuImage.image =[UIImage imageNamed:@"Council Website menu.png"];
break;
default:
break;
return cell;
有人可以指出我的图像哪里出了问题,或者我需要将我的委托/数据源设置为什么吗?
谢谢。
【问题讨论】:
看起来您应该将delegate
和 dataSource
设置为您的 MenuController
实例,而不是 RoadSafetyAppViewController
。
RoadSafetyAppViewController
是 MenuController
的父级吗?将delegate
和datasource
设置为MenuController
并检查。
menuArray 初始化了吗?
【参考方案1】:
At your MenuController.h
MenuController : UIViewController<UITableViewDelegate,UITableViewDataSource>
并在 Interface Builder 中将 UITableView 与 Delegate&Datasource 连接起来..
希望它能解决您的问题..!
【讨论】:
我无法控制+从 tableview 拖动到 Delegate 或 Datasource。 您需要像上面一样声明 Delegates 以使其从 tableview 控制+拖动到 Delegate & Datasource...! 我已经按照您的建议修改了我的 .h 文件,但仍然无法从我的表格视图数据源拖动到表格视图。 您是否在 Interface Builder 中将文件所有者设置为 MenuViewController..PLZ 检查..这可能是问题..! 我愿意,但加班我离开身份检查员,自定义类变回 UITableview。【参考方案2】:在MenuController的viewDidLoad方法中编码设置delegate和datasouce
_tblView.delegate = self;
_tblView.dataSource = self;
【讨论】:
由于某种原因,我不能这样做,我无法将我的 IBoutlet 链接到 tableview。控制+拖动不允许我在我的 .hfile 中选择 iboutliet以上是关于在自定义 UIview 中设置 UItableview 的委托和数据源的主要内容,如果未能解决你的问题,请参考以下文章
如何在自定义 UIView 中从 ViewController 传递数据
在自定义 HttpClientHandler 中设置 allowautoredirect=false