Ich habe eine tableView
mit 2 Abschnitten. Ein Abschnitt hat nur einen row
mit dem titleLabel, das Datum anzeigt. Ich verwende Action Sheet Picker, um das Action Sheet anzuzeigen.
Also meiner Ansicht-Controller habe ich ein Objekt von DateTableViewCell *dateCell;
erklärt und hier sind meine Delegierten und Datenquelle Methode des Tabellenansicht:Verwenden von UITableViewCell eines Abschnitts zum Auslösen einer IBAction
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 2;
}
- (NSString *)tableView:(UITableView *)tableView
titleForHeaderInSection:(NSInteger)section {
if (section == 0) {
return @"Date";
}
else
{
return @"Select Location to View Schedule";
}
}
- (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section
{
if (section == 0) {
return 1;
}
else
{
return 5;
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"locationCell";
HomeLocationTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:
cellIdentifier];
static NSString *dateCellIdentifier = @"dateCell";
dateCell = [tableView dequeueReusableCellWithIdentifier:
dateCellIdentifier];
if (cell == nil) {
cell = [[HomeLocationTableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:cellIdentifier];
}
else if (dateCell == nil)
{
dateCell = [[DateTableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:dateCellIdentifier];
}
if (indexPath.section==0)
{
dateCell.textLabel.text = [NSString stringWithFormat:@"%@",[NSDate date]];
return dateCell;
}
else
{
cell.locationNameLabel.text = @"ABC Hospital";
cell.totalAppointmentLabel.text = @"15 Appointments";
return cell;
}
}
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.section==0)
{
[dateCell targetForAction:@selector(selectADate:) withSender:self];
//[self performSelector:@selector(selectADate:) withObject:dateCell];
}
else
{
[self.tabBarController setSelectedIndex:1];
}
}
Abschnitt Ignorieren 1, da es nur die Demo-Daten ist. Also, das ist, wie ich Datum in die Zelle hinzufügen und wie Sie sehen können, in Zeile für Index Pfad Ich rufe die Methode unten, aber es wird nicht aufgerufen. Ich habe es sowohl mit der kommentierten als auch der nicht kommentierten Zeile versucht.
- (void)selectADate:(UIControl *)sender {
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *minimumDateComponents = [calendar components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear fromDate:[NSDate date]];
[minimumDateComponents setYear:2000];
NSDate *minDate = [calendar dateFromComponents:minimumDateComponents];
NSDate *maxDate = [NSDate date];
_actionSheetPicker = [[ActionSheetDatePicker alloc] initWithTitle:@"" datePickerMode:UIDatePickerModeDate selectedDate:self.selectedDate
target:self action:@selector(dateWasSelected:element:) origin:sender];
[(ActionSheetDatePicker *) self.actionSheetPicker setMinimumDate:minDate];
[(ActionSheetDatePicker *) self.actionSheetPicker setMaximumDate:maxDate];
[self.actionSheetPicker addCustomButtonWithTitle:@"Today" value:[NSDate date]];
[self.actionSheetPicker addCustomButtonWithTitle:@"Yesterday" value:[[NSDate date] TC_dateByAddingCalendarUnits:NSCalendarUnitDay amount:-1]];
self.actionSheetPicker.hideCancel = YES;
}
- (void)dateWasSelected:(NSDate *)selectedDate element:(id)element {
self.selectedDate = selectedDate;
//may have originated from textField or barButtonItem, use an IBOutlet instead of element
dateCell.dateLabel.text = [self.selectedDate description];
}
Wenn ich versuche, - (IBAction)selectADate:(UIControl *)sender
statt, was ich jetzt bin mit es mir sagt, es zu etwas zu verbinden, und ich mag es Handy verbinden, aber es gibt keine solche Verbindung möglich, auch wenn ich versuche, es zu implementieren UITableViewCell
Klasse.
Warum brauchen Sie Absender? –
Was wäre der Absender in diesem Fall? ist es Zelle? – Lion
@ Mr.UB Ich brauche es nicht. Ich gerade, was didSelect, um Pickerview zu öffnen und geben Sie das dateLabel, was auch immer Benutzer ausgewählt hat. –