如何快速调用 initWith...
Posted
技术标签:
【中文标题】如何快速调用 initWith...【英文标题】:How to call initWith... in swift 【发布时间】:2015-05-11 09:17:29 【问题描述】:我有一个objective-c 类(RDAlertView)
,它创建了一个警报(ios =8 的UIAlertController)
这是 Objective-C 中的代码:
RDAlertView* alert = [[RDAlertView alloc] initWithTitle:@"Notification"
message:@"message"
completion:completion:^(NSInteger buttonIndex, NSInteger cancelButtonIndex, NSArray *textflieds)
cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alert show];
我的问题是:如何在 Swift 中调用它而不改变我的班级(如果可能的话)?
这里是示例项目的链接:https://bitbucket.org/ejanowski/rdalertview-issue
【问题讨论】:
找到了,swift似乎不管理NS_REQUIRES_NIL_TERMINATION。感谢 Dharmesh Kheni 和 James Webster 的帮助!! 【参考方案1】:我认为这是你需要的:
var alert = RDAlertView(title: "Notification", message: "message", completion: nil, cancelButtonTitle: "OK", otherButtonTitles: nil)
alert.show()
希望它会有所帮助。
【讨论】:
我有这个错误:“Extra argument 'title' in call”【参考方案2】:这些方法被视为构造函数。你可以这样称呼他们:
var alert = RDAlertView("notification", message:"message", completion:nil, cancelButtonTitle:"Cancel", otherButtonTitles:nil)
alert.show()
警告:在没有 IDE 的情况下编写,注意语法错误/拼写错误
【讨论】:
这给了我一个错误:"Extra argument in call" var alert = RDAlertView("notification", message:"test messafe", completion:nil, cancelButtonTitle:"cancel", otherButtonTitles:nil) alert.show() 它可能要求第一个元素有它的标签。尝试添加:“标题:” “调用中的额外参数'title'”,可能是完成块?我是新来的 swift :s 我也很新 :P 由于语法对我来说有点新,我让自动完成来完成一些工作。我输入RDAlertView(
,然后点击回车,这样我就完成了大部分语法
是的,但是 xCode 不会自动完成,它只是建议 RDAlertView()... 即使是 ctrl + 空格也只建议使用默认初始化程序。【参考方案3】:
UIAlertView
在 iOS 8 中已弃用。
您可以使用此代码显示警报:
var alert = UIAlertController(title: "Alert", message: "test", preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "Click", style: UIAlertActionStyle.Default, handler: nil))
self.presentViewController(alert, animated: true, completion: nil)
【讨论】:
OP 没有使用 UIAlertView,他们使用的是自定义实现 基于 UIAlertView。在 iOS 8 中已弃用。 @Fogmeister,Adeel,对不起,但这个答案仍然是错误的。您错误地认为 RDAlertView 基于 UIAlertView。 OP在问题中澄清了这一点 @AdeelAhmed 如果你知道这个答案是错误的,你应该删除它。 :) @EricD。答案并非完全错误。它(几乎)正确地展示了如何从 Swift 中调用初始化程序,即使它使用了错误的类名。它只需要一些编辑。【参考方案4】:UIAlertView.showWithTitle("Hello", message: "Hello World", cancelButtonTitle: "Okay") alertView, buttonIndex in
// Do something when the alert view is clicked
let anAlertView = UIAlertView(title: "Choice", message: "Pick one", cancelButtonTitle: "No", otherButtonTitles: "Yes", "Maybe")
anAlertView.showWithCompletion alertView, buttonIndex in
switch buttonIndex
case 1: println("Yes")
case 2: println("Maybe")
default: println("No")
【讨论】:
以上是关于如何快速调用 initWith...的主要内容,如果未能解决你的问题,请参考以下文章
Android Gradle 插件BuildType 编译类型配置 ⑧ ( versionNameSuffix 配置 | zipAlignEnabled 配置 | initWith 方法 )