比较同一个UIViewController类的实例或对象

时间:2012-11-16 11:28:04

标签: iphone ios ipad uiviewcontroller uitabbarcontroller

我创建了两个从UIViewController类派生的MasterViewController实例

_masterViewController = [[MasterViewController alloc] initWithNibName:@"MasterViewController_iPhone" bundle:nil];

// second instance with same class and duplicate nib view
_favItemMasterVC = [[MasterViewController alloc] initWithNibName:@"favMasterViewController_iPhone" bundle:nil];

MasterViewController_iPhone& favMasterViewController_iPhone视图是一样的。 现在我想检查当前选择了哪个UIViewController(例如:在tabbar上)。 我怎样才能找到两个对象之间的区别?

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {

if ([viewController isKindOfClass:[_favItemListMasterVC class]] { // it is always called in both cases}

isMemberOfClass://也无效

如何检查差异?

4 个答案:

答案 0 :(得分:3)

不确定我是否理解你在做什么,但是如果_favItemListMasterVC和_masterViewController指向添加到UITabBar的相同VC,你可以检查它只是比较指针

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {

if (viewController == _favItemListMasterVC)
{
    //the visible view controller is _favItemListMasterVC
}

答案 1 :(得分:2)

   - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
if (viewController == _masterViewController)
{

}
else if (viewController == _favItemMasterVC)
{

}
}

答案 2 :(得分:1)

我认为您可以使用标签来检查哪个是哪个。 Tag是UIView的属性设置两个xib文件中的标记值。并使用代码检查标记。

答案 3 :(得分:1)

要比较对象,您还可以使用:

if([viewController isEqual:_favItemMasterVC])