Qad*_*ain 30 objective-c uiviewcontroller ios swift
如何UIViewController
在swift中获取Class的类名
在Objective C中,我们可以这样做:
self.appDelegate = (shAppDelegate *)[[UIApplication sharedApplication] delegate];
UIViewController *last_screen = self.appDelegate.popScreens.lastObject ;
if(last_screen.class != self.navigationController.visibleViewController.class){
//.......
}
Run Code Online (Sandbox Code Playgroud)
但是我很快就尝试过了
let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let last_screen = appDelegate.popScreens?.lastObject as UIViewController
Run Code Online (Sandbox Code Playgroud)
不能这样做.
if last_screen.class != self.navigationController.visibleViewController.class{
//....
}
Run Code Online (Sandbox Code Playgroud)
没有类方法,UIViewController
即最后一个屏幕
小智 52
要知道您的班级名称,您可以拨打以下内容:
var className = NSStringFromClass(yourClass.classForCoder)
Run Code Online (Sandbox Code Playgroud)
cno*_*gr8 25
最简洁的方法就是这样,无需知道你的班级名称.
let name = String(describing: type(of: self))
Run Code Online (Sandbox Code Playgroud)
pra*_*bhu 21
swift 3中的一个简单方法是编写以下代码:
为实例:
let className = String(describing: self)
Run Code Online (Sandbox Code Playgroud)
对于课程:
let className = String(describing: YourViewController.self)
Run Code Online (Sandbox Code Playgroud)
Isu*_*uru 12
扩展juangdelvalle的答案.
我将其添加为扩展名,以便可以从任何视图控制器调用它,并且更容易调用.在某些情况下,NSStringFromClass
在Swift中返回一个字符串,格式如下:
<项目名称> .viewControllerClassName.
修改此扩展属性以删除项目名称前缀并仅返回类名称.
extension UIViewController {
var className: String {
return NSStringFromClass(self.classForCoder).componentsSeparatedByString(".").last!
}
}
Run Code Online (Sandbox Code Playgroud)
小智 6
斯威夫特 4
假设我们有 name 的类HomeViewController
。然后您可以使用以下代码获取类名:
let class_name = "\(HomeViewController.classForCoder())"
Run Code Online (Sandbox Code Playgroud)
该classForCoder()
方法返回AnyClass
对象(您的类的名称),我们将其转换为用户的字符串。
这是 isuru 答案的 swift3 版本。
extension UIViewController {
var className: String {
return NSStringFromClass(self.classForCoder).components(separatedBy: ".").last!;
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
斯威夫特 5 解决方案:
extension NSObject {
var className: String {
return String(describing: type(of: self))
}
class var className: String {
return String(describing: self)
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
class TextFieldCell: UITableVIewCell {
}
class LoginViewController: UIViewController {
let cellClassName = TextFieldCell.className
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
27236 次 |
最近记录: |