Ich habe eine UIViewController
mit einer UITableView
drin. Die Tabellenansicht enthält angepasste Zellen mit darin enthaltenen Textfeldern. Die Delegierten des Textfelds sind auf diese Klasse festgelegt.UITableViews didSelectRowAtIndexPath-Methode wird nicht aufgerufen
Auf Bearbeitung eines Textfelds (textFieldDidBeginEditing
) habe ich eine Dropdown (UIView
mit einem Tableview drin). Das Dropdown wird programmgesteuert erstellt. Das Problem, mit dem ich konfrontiert bin, ist, dass die didSelectRowAtIndexPath
der Dropdown-Tabelle nicht aufgerufen wird. Ich habe den Delegaten, Datenquelle zu der Klasse richtig gesetzt. Ich habe auch alle anderen Gesten entfernt. Ich habe sichergestellt, dass die Tabellenansicht nicht im Bearbeitungsmodus ist.
Auf die Klicks von Zellen in der Dropdown-Liste, die einzige Sache, die funktioniert, ist die delegierten Methoden des Textfelds des Hintergrundtabellenfeldes.
//UITableView class(with textfield from where dropdown is loaded.)
- (void)textFieldDidBeginEditing:(UITextField *)textField{
if(textField.tag == 3){
if(dropDown == nil) {
CGFloat f = 200;
dropDown = [[SFTextFieldDropDown alloc] showDropDownWithSender:textField withHeight:f andElements:self.list];
dropDown.delegate = self;
}
}
}
// Custom Drop down class.
- (id)showDropDownWithSender:(UITextField *)senderTextField withHeight:(CGFloat)height andElements:(NSArray *)array{
table = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, btn.size.width, 0)];
table.delegate = self;
table.dataSource = self;
table.layer.cornerRadius = 5;
table.backgroundColor = [UIColor colorWithRed:0.239 green:0.239 blue:0.239 alpha:1];
table.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
table.separatorColor = [UIColor grayColor];
[table setAllowsSelection:YES];
table.frame = CGRectMake(0, 0, btn.size.width, *height);
[table setEditing:NO];
[self addSubview:table];
}
return self;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return 40;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [self.list count];
}
- (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];
cell.textLabel.font = [UIFont systemFontOfSize:15];
cell.textLabel.textAlignment = NSTextAlignmentLeft;
cell.selectionStyle = UITableViewCellSelectionStyleDefault;
}
if([list count] > 0)
cell.textLabel.text = [list objectAtIndex:indexPath.row];
return cell;
}
Zeigen Sie Ihren Code .. –
Bitte fügen Sie Ihren Code hier für eine bessere Bewertung hinzu –
Haben Sie eine Geste zu Ihrer Ansicht hinzugefügt? –