1

我创建了从 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(例如:在标签栏上)。我怎样才能找到两个对象之间的区别?

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

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

isMemberOfClass: // 也不工作

如何检查差异?

4

4 回答 4

3

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

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

if (viewController == _favItemListMasterVC)
{
    //the visible view controller is _favItemListMasterVC
}
于 2012-11-16T11:32:19.957 回答
2
   - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
if (viewController == _masterViewController)
{

}
else if (viewController == _favItemMasterVC)
{

}
}
于 2012-11-16T11:35:23.020 回答
1

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

于 2012-11-16T11:32:37.637 回答
1

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

if([viewController isEqual:_favItemMasterVC])
于 2012-11-16T12:12:37.433 回答