我怎样才能知道iphone中的当前viewcontroller名称

iPh*_*Dev 2 iphone objective-c uiviewcontroller

我有BaseView实现UIViewController.项目中的每个视图都必须实现此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];
}
Run Code Online (Sandbox Code Playgroud)

问题是我的Login视图还实现了BaseView,检查登录,然后再次打开LoginView即插入递归调用.

我是否可以检查checkLoginStatus方法,如果请求来自LoginView,则不采取任何其他操作检查登录.例如:

- (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];
    }
}
Run Code Online (Sandbox Code Playgroud)

请帮忙..

typ*_*ror 5

使用以下方法:

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

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

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

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];
}
Run Code Online (Sandbox Code Playgroud)