我定义了我自己的控制器,没有像这样的nib文件:
@interface EngineViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> {
EngineViewProperties* viewProp;
UIImageView *imgView; // image view of selected engine
NSUInteger selectedIndex;
UITableView *menu;
}
@property (nonatomic,retain) EngineViewProperties* viewProp;
- (EngineViewController *) initWithEngineViewProperties: (EngineViewProperties *) _viewProp;
- (void) dropdownMenu: (id) sender;
我在loadView中创建了我的视图,有三个子视图。帮助子视图arrowBtn弹出搜索引擎列表。
- (void)loadView {
// ...
UIButton *arrowBtn = [[UIButton alloc] initWithFrame:rect];
[arrowBtn setImage:viewProp.arrowImg forState:UIControlStateNormal];
[arrowBtn addTarget:self action:@selector(dropdownMenu:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:imgView];
[self.view addSubview:label];
[self.view addSubview:arrowBtn];
// ...
}
我在选择器dropdownMenu:
中创建了一个列出搜索引擎的表格- (void) dropdownMenu: (id) sender {
UIButton *arrowBtn = (UIButton *)sender;
// ...
menu = [[UITableView alloc] initWithFrame:rect style:UITableViewStylePlain];
menu.delegate = self;
menu.dataSource = self;
menu.backgroundColor = [UIColor blackColor];
menu.allowsSelection = YES;
[self.view addSubview:menu];
[self.view bringSubviewToFront:menu];
[menu release];
}
我实施了
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
像往常一样。
但结果是菜单快乐地弹出,但我对细胞无能为力。我点击了单元格,但没有响应。无法调用像“didSelectRowAtIndexPath”这样的方法。
很抱歉一次粘贴这么多代码。但我真的需要帮助。我不知道是什么问题。请原谅我因为我的英语水平低而且Iphone的开发技巧很低。如果你给我一点帮助,我会非常感谢建议。
//添加-------------------------
“numberOfRowsInSection”很简单:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [viewProp.txtArray count];
}
和另一种方法:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *MenuItems = @"MenuItems";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MenuItems];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier: MenuItems] autorelease];
}
NSUInteger row = [indexPath row];
cell.imageView.image = [viewProp.imgArray objectAtIndex:row];
cell.textLabel.text = [viewProp.txtArray objectAtIndex:row];
cell.textLabel.textColor = [UIColor whiteColor];
cell.textLabel.font = [UIFont systemFontOfSize:12.0];
cell.selectionStyle = UITableViewCellSelectionStyleNone; // Blue style tried,helpless too
if (row == selectedIndex) {
cell.selected = YES;
}
cell.userInteractionEnabled = YES;
return cell;
}
//已添加
奇怪的是,当菜单首先加速时,默认选中的单元格被正确突出显示,但突出显示很快就会消失。
答案 0 :(得分:0)
使用
cell.selectionStyle = UITableViewCellSelectionStyleGray;
中的
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
为您的手机。
删除
cell.userInteractionEnabled = YES;
您文件中的代码。
答案 1 :(得分:0)
尝试在表中查看cell.selectionStyle = UITableViewCellSelectionStyleBlue
查看数据源。同时检查是否为表视图和单元格启用了userInteraction
。
答案 2 :(得分:0)
您是否在表格中显示任何数据?
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
在你的viewController中??
似乎您正在正确设置delgate属性,您也将协议添加到同一个ViewController。所以问题可能是tableView中没有数据供选择,或者tableView上有一些View阻止你与tableView的交互。