此代码使用委托
[[[UIAlertView alloc] initWithTitle: @ "Error" message: @ "You can leave the text blank" delegate: self cancelButtonTitle: @ "Quit" otherButtonTitles: @ "OK", nil] show];
有问题的代表是:
(void) alertView: (UIAlertView *) alertView clickedButtonAtIndex: (NSInteger) buttonIndex {
我的问题是: 如何自动完成Xcode委托方法?。
在Eclipse中,您可以从Source菜单选项Generate Delegate methods。
问候并感谢!
答案 0 :(得分:7)
您的课程应该支持UIAlertViewDelegate协议
@interface YourClass : NSObject
<
UIAlertViewDelegate
>
开始输入“破折号” - 您会看到所有支持的方法都包含UIAlertViewDelegate
方法。要减少自动填充方法列表:键入-alert
只需使用“转到定义”即可查看所有“UIAlertViewDelegate”方法。开始在XCode
如果@required
部分下的方法必须在您的委托对象中实现它,否则您将收到警告。
如果在@optional
方法下,您不必实施任何这些方法(您将不会收到警告),但在大多数情况下,您应该这样做,让它按预期工作。
答案 1 :(得分:2)
如果方法不,则不会收到有关未实现方法的任何警告。 XCode和Eclipse是不同的。
在第二个想法中,你可以使用这个trick
答案 2 :(得分:1)
另一种选择,你可以使用appcode而不是xcode,可以找到“生成”功能。
答案 3 :(得分:1)
答案 4 :(得分:0)
在Xcode中,您可以根据需要使用自定义组件创建自己的类,并在侧面创建一个委托方法,用于响应,就像人们用于解析和AsyncImageView等一样。
您可以访问here获取Async类演示,并使用此代码进行解析,您可以为UIAlertView
编写自己的类
答案 5 :(得分:0)
非常感谢大家。
在这种情况下,所有“@protocol UIAlertViewDelegate”方法都在@ optional下。我明白在这种情况下我的类不应该支持UIAlertViewDelegate协议,因为所有方法都在@optional下。
解决方案是:
右键单击UIAlertViewDelegate或UIAlertView,单击“跳转到定义”,然后您可以看到@protocol。在里面你可以看到@optional和@requiered的方法。如果@required部分下的方法你必须在你的委托对象中实现它,否则你会收到警告。如果在@optional方法下你不必实现任何这些方法(你不会收到警告)
再次感谢您
答案 6 :(得分:0)
这就是我为经常使用的代表所做的事情。
加成:
我有时也会在实现中添加一些默认代码,例如:
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
NSString* title = [alertView.title lowercaseString];
if (buttonIndex != alertView.cancelButtonIndex) {
if ([title isEqualToString:<#action title#>]) {
<#statements#>
}
}else{
<#cancel code#>
}
}