我的 View Controller StartViewController 由其他两个 View Controller (RootViewController 或 TelnetAddressbookViewController)之一打开/添加(addSubview)。我试图找出这两个中的哪一个是启动 StartViewController 的那个。
NSLog(@"superview %@",self.view.superview.description);
NSLog(@"superview %@",self.superclass);
if ([self.view.superview isKindOfClass:[RootViewController class]]) {
NSLog(@"launched by RootViewController");
}else if ([self.view.superview isKindOfClass:[TelnetAddressbookViewController class]]) {
NSLog(@"launched TelnetAddressbookViewController");
}
[self.view removeFromSuperview];
第一个 NSLOG (self.view.superview.description) 输出:
superview UIView: 0x81d6710; frame = (0 0; 748 1024); transform = [0, 1, -1, 0, 0, 0]; autoresize = RM+BM; layer = >
它的引用是我需要的(0x81d6710),但它的类是 UIViewController 而不是我的自定义 View Controller 。
最佳答案
代替
NSLog(@"superview %@",self.view.superview.description);
你要...
#import <objc/runtime.h>
NSLog(@"superview %s",class_getName([self.view.superview class]) );
/* or if you want an NSString */
NSLog(@"superview %@", NSStringFromClass([self.view.superview class]) );
关于ios - 找出superview的类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14631273/