So habe ich einen View-Controller mit einem einzigen UITableView, die eine Zeichenfolge für den Benutzer zeigt. Aber ich brauchte einen Weg, um den Benutzer dieses Objekt mit Hilfe einer normalen UIButton per ID auswählen zu lassen, so dass ich es als Unteransicht hinzufügte und das Klickereignis wie erwartet funktioniert.Wie übergeben Sie einen int-Wert auf UIButton klicken Sie in UITableView
Das Problem ist das - wie kann ich einen Int-Wert an dieses Klickereignis übergeben? Ich habe versucht, Attribute der Schaltfläche wie button.tag oder button.accessibilityhint ohne viel Erfolg zu verwenden. Wie übergeben die Profis einen solchen Wert?
Auch ist es wichtig, dass ich den tatsächlichen [x intValue] von der Int später im Prozess erhalten kann. Eine Weile zurück dachte ich, ich könnte dies mit einem einfachen
NSLog tun (@ "der tatsächlich ausgewählte Hut war% d", [obj.idValue intValue]);
Aber das scheint nicht zu funktionieren (keine Ahnung, wie ich den tatsächlichen int-Wert direkt aus der Variablen ziehen kann?).
Der Arbeits Code, den ich habe, ist unter
- (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] autorelease];
}
if ([self.hats count] > 0) {
Hat* obj = [self.hats objectAtIndex: [indexPath row]];
NSMutableString* fullName = [[NSMutableString alloc] init];
[fullName appendFormat:@"%@", obj.name];
[fullName appendFormat:@" %@", obj.type];
cell.textLabel.text = fullName;
cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
//add the button to subview hack
UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(50, 5, 50, 25);
[button setTitle:@"Select" forState:UIControlStateNormal];
button.backgroundColor = [UIColor clearColor];
button.adjustsImageWhenHighlighted = YES;
button.tag = obj.idValue; //this is my current hack to add the id but no dice :(
[button addTarget:self action:@selector(action:) forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:button];
//hack
}
return cell;
}
- (void)action:(id)sender {
int* hatId = ((UIButton *)sender).tag; //try to pull the id value I added above ...
//do something w/ the hatId
}
Sie sagen NSLog (@ "der tatsächlich ausgewählte Hut war% d", [obj.idValue intValue]); funktioniert nicht, also stellst du es vielleicht nie ein.Weil ich dasselbe mache, indem ich das Tag setze und es in der Aktionsmethode vom Absender lese, aber für mich funktioniert es. –
Benötigen Sie sowohl eine Zubehörtaste als auch Ihre "Select" -Taste? Wenn eine Zubehörtaste angetippt wird, ruft sie accessoryButtonTappedForRowWithIndexPath auf, so dass keine Markierung erforderlich ist. – Anna
Ich benutze die Zubehörtaste für eine Detailansicht des Hutes, die Auswahl fügt nur den spezifischen Hut zu einem Einkaufswagen für die Kasse hinzu/etc –