2011-06-23 55 views
2

我想用日期选取器来理解UiActionSheet。UIActionSheet - 类没有实现'UIActionSheetDelegate'协议

获取2个警告,我似乎无法清除,请参阅代码部分末尾的代码。

警告:语义问题:发送 'DeveloperTL *' 到不兼容的类型 'ID'

警告的参数:语义问题:发送 'DeveloperTL *' 不兼容类型的参数“ ID'

任何想法如何解决这些警告?

我从其他几个例子复制的代码:

define kPickerTag 200 
    define SelectButtonIndex 1 
    define CancelButtonIndex 2 
    NSString *strPrintDate; 


    - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { 
     if (buttonIndex != [actionSheet cancelButtonIndex]) { 

      //set Date formatter 
      NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
      [formatter setDateFormat:@"MM/dd/YYYY h:mm a"]; 

      //Gets our picker 
      UIDatePicker *ourDatePicker = (UIDatePicker *) [actionSheet viewWithTag:kPickerTag]; 

      NSDate *selectedDate = [ourDatePicker date]; 

      NSString *msg = [[NSString alloc] initWithFormat:@"The date that you had selected was, %@", [formatter stringFromDate:selectedDate]]; 
      [formatter release]; 

      UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Date" message:msg delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil]; 
      [alert show]; 
      [alert release]; 
      [msg release]; 
     } 
    } 




    -(void)willPresentActionSheet:(UIActionSheet *)actionSheet { 

     UIDatePicker *pickerView = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 50, 100, 116)]; 

     [pickerView setTag:kPickerTag]; 

     [pickerView setDatePickerMode:UIDatePickerModeDate]; 

     if(strPrintDate != @"" && strPrintDate != nil) 
     { 
      NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
      [dateFormat setDateFormat:@"MMM-dd-yyyy"]; 

      NSDate *pickerdate = [dateFormat dateFromString:strPrintDate]; 
      [pickerView setDate:pickerdate animated:YES]; 
      [dateFormat release]; 
     } 

     [actionSheet addSubview:pickerView]; 

     [pickerView release]; 

     NSArray *subViews = [actionSheet subviews]; 

     [[subViews objectAtIndex: SelectButtonIndex] setFrame:CGRectMake(20, 266, 280, 46)]; 
     [[subViews objectAtIndex:CancelButtonIndex] setFrame:CGRectMake(20, 317, 280, 46)]; 

    } 


    - (IBAction)butn1 { 



     UIActionSheet *asheet = [[UIActionSheet alloc] 
           initWithTitle:@"Pick the date you want to see." delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Select", nil]; 

// THIS IS THE ERROR MESSAGE: 
// **warning: Semantic Issue: Sending 'DeveloperTL *' to parameter of incompatible type // 'id<UIActionSheetDelegate>'** 


     [asheet showInView:[self.view superview]]; 

     [asheet setFrame:CGRectMake(0, 117, 320, 383)]; 
     [asheet release]; 

    } 
+2

你缺少。 – Smith3

回答

7

你的类中,你正在使用UIActionSheet,需要UIActionSheetDelegate协议

使用如下在你的.h类确认。

@interface myClass: UIView <UIActionSheetDelegate> 
{ 

} 
@end 
+0

感谢所有回应...... !! –

0

在.h文件中在伴随这个.m文件的.h文件中添加此

your interface :UIViewController<UIActionSheetDelegate>