自定义tableview单元格内的弹出窗口

问题描述:

我有三个按钮和一些其他组件的自定义tableviewcell。自定义tableview单元格内的弹出窗口

enter image description here 我已经在弹出窗口中添加了datepicker(我已经使用FPPopover库来执行此操作)以获取“开始日期”的值。在这里,我迄今所做的,

“的cellForRowAtIndexPath”方法

MainTableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"MainTableViewCell"]; 

if (!cell) { 
    cell = [[MainTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 
            reuseIdentifier:@"MainTableViewCell"]; 

     NSArray * topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"MainTableViewCell" owner:self options:nil]; 

     for(id currentObject in topLevelObjects) 
     { 
      if([currentObject isKindOfClass:[UITableViewCell class]]) 
      { 
       cell = (MainTableViewCell *)currentObject; 
       break; 
      } 
     } 

} 
... 

... 

[cell.startDateMainBtn addTarget: self action: @selector(startDateButtonPressed:) forControlEvents: UIControlEventTouchUpInside]; 
cell.startDateMainBtn.tag = indexPath.row; 
cell.startDateMainBtn.titleLabel.tag = 1; 

,并在“startDateButtonPressed”方法我已经做了以下。

- (void) startDateButtonPressed:(id) sender 
{ 
NSUInteger senderId = [sender tag]; 

if (!self.popoverContent) { 
    self.popoverContent = [[UIViewController alloc] init]; //ViewController 
} 
UIView *popoverView = [[UIView alloc] init]; //view 
popoverView.backgroundColor = [UIColor blackColor]; 

datePicker = [[UIDatePicker alloc] init]; //Date picker 
datePicker.frame = CGRectMake(0, 0, 320, 216); 
datePicker.datePickerMode = UIDatePickerModeDate; 
[datePicker setTag:senderId]; 
[datePicker addTarget:self action:@selector(selectedDate:) forControlEvents:UIControlEventValueChanged]; 
[popoverView addSubview:datePicker]; 

self.popoverContent.view = popoverView; 
popover.alpha = 0.8; 
popover = [[FPPopoverController alloc] initWithViewController:self.popoverContent]; 
popover.contentSize = CGSizeMake(340, 266); 
popover.arrowDirection = FPPopoverArrowDirectionUp; 
[popover presentPopoverFromView:sender]; 

switch ([[sender titleLabel] tag]) { 

     //START DATE 
    case 1: 
    { 
     self.buttonTypeTag = 1; 
    } 
     break; 

    default: 
     break; 
} 

}

而在“selectedDate”方法,

-(void)selectedDate:(id) sender 
{ 
NSLog(@"SELECTED Date %@ , Row %i",datePicker.date, datePicker.tag); 

NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
[df setDateFormat:@"yyyy,MM,dd"]; 

// UIButton *btn = (UIButton *)sender; 
// [btn setTitle:@"date" forState:UIControlStateNormal]; 

switch (self.buttonTypeTag) { 

     //START DATE 
    case 1: 
    {   
//   [self.cell.startDateMainBtn setTitle:[df stringFromDate:datePicker.date] forState:UIControlStateNormal]; 
     NSString *dateStr = [df stringFromDate:datePicker.date]; 
     NSLog(@"SELECTED Date %@",dateStr); 
    } 
     break; 

    default: 
     break; 
} 

[popover dismissPopoverAnimated:YES]; 
} 

所有工作正常!但我的问题是我无法将选定日期字符串(通过弹出窗口)值分配给开始日期按钮标题。我怎样才能做到这一点?有没有简单的方法来做到这一点?

试试这个代码:

在.h文件中

UIButton *btn; 

在.m文件

-(void)startDateButtonPressed:(id) sender 
{ 

btn=(UIButton *)sender; 
} 
-(void)selectedDate:(id) sender 
{ 
NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
[df setDateFormat:@"yyyy,MM,dd"]; 
NSString *dateStr = [df stringFromDate:datePicker.date]; 
[btn setTitle:dateStr forState:UIControlStateNormal]; 

} 
+0

非常感谢基尔提mali.Thanks很多!最后它的工作! :) – happycoder