gpt4 book ai didi

iphone - 我怎样才能知道 iPhone 中当前 View Controller 的名称

转载 作者:行者123 更新时间:2023-12-03 20:26:48 25 4
gpt4 key购买 nike

我有实现 UIViewController 的 BaseView。项目中的每个 View 都必须实现这个BaseView。

在BaseView中,我有方法:

-(void) checkLoginStatus
{
defaults = [[NSUserDefaults alloc] init];

if(![[defaults objectForKey:@"USERID"] length] > 0 )
{
Login *login=[[Login alloc] initWithNibName:@"Login" bundle:nil];
[self.navigationController pushViewController:login animated:TRUE];
[login release];
}
[defaults release];
}

问题是我的登录 View 也实现了 BaseView,检查登录,然后再次打开 LoginView,即陷入递归调用。

如果请求来自 LoginView,我可以检查 checkLoginStatus 方法,然后不采取任何操作,检查登录。例如:

- (void) checkLoginStatus
{
**if(SubView is NOT Login){**
defaults = [[NSUserDefaults alloc] init];

if(![[defaults objectForKey:@"USERID"] length] > 0 )
{
Login *login=[[Login alloc] initWithNibName:@"Login" bundle:nil];
[self.navigationController pushViewController:login animated:TRUE];
[login release];
}
[defaults release];
}
}

请帮忙..

最佳答案

使用以下方法:

if ([self isMemberOfClass:[Login class]])
{
CFShow(@"Yep, it's the login controller");
}

isMemberOfClass 告诉您该实例是否是该类的精确实例。还有isKindOfClass:

if ([self isKindOfClass:[BaseView class]])
{
CFShow(@"This will log for all classes that extend BaseView");
}

isKind 测试该类是否是某个类的扩展。

给出你的例子:

-(void) checkLoginStatus
{
defaults = [[NSUserDefaults alloc] init];

if (![self isMemberOfClass:[Login class]])
{
if (![[defaults objectForKey:@"USERID"] length] > 0 )
{
Login *login=[[Login alloc] initWithNibName:@"Login" bundle:nil];
[self.navigationController pushViewController:login animated:TRUE];
[login release];
}
}
[defaults release];
}

关于iphone - 我怎样才能知道 iPhone 中当前 View Controller 的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2635469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com