首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIActionSheet - class不实现“UIActionSheetDelegate”协议。

UIActionSheet - class不实现“UIActionSheetDelegate”协议。
EN

Stack Overflow用户
提问于 2011-06-23 13:30:28
回答 2查看 2.6K关注 0票数 2

我正试图理解UiActionSheet的约会选择。

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

警告:语义问题:将'DeveloperTL *‘发送给不兼容类型'id'的参数

警告:语义问题:将'DeveloperTL *‘发送给不兼容类型'id'的参数

有什么办法来修正这些警告吗?

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

代码语言:javascript
复制
    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];

    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-23 13:33:53

您使用UIActionSheet的类需要使用UIActionSheetDelegate协议进行确认。

在.h类中使用如下所示。

代码语言:javascript
复制
@interface myClass: UIView <UIActionSheetDelegate>
{

}
@end
票数 7
EN

Stack Overflow用户

发布于 2011-06-23 13:34:06

在.h文件中添加以下内容

代码语言:javascript
复制
your interface :UIViewController<UIActionSheetDelegate>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6454871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档