2

假设我有一个嵌套了很多 uitableviewcontrollers 和 uiviewcontrollers 的 tabbar 应用程序。我将使用哪一行代码来获取特定控制器的句柄?

例如,假设我想获取 uitableviewcontroller,它当前是标签栏控制器的第三个标签。我在具有以下代码的 MyObject.h/m 文件中:

我的对象.h

#import <Foundation/Foundation.h>
#import "MyAppDelegate.h"

@interface MyObject : NSObject

-(void) myfunction;

@end

我的对象.m

#import "MyObject.h"

@implementation MyObject



-(void) myfunction  {

    UITableViewController * mytvc = /*Some line of code*/;

}
@end

我用什么来代替/*Some line of code*/mytvc 是一个指向我感兴趣的 uitableviewcontroller 的变量?

我正在使用 XCode 4.2。我有一个故事板来说明我的每个 uiviewcontrollers。Tabbar 视图控制器是 xcode 为我做的第一件事。所以我认为这意味着它是应用程序的顶部?

4

2 回答 2

1

如果它是您的根视图控制器,并且您可以访问您的应用程序委托,您应该能够像这样访问您的控制器:

appDelegate.window.rootViewController
于 2012-05-17T00:38:38.043 回答
1

rootViewController.tabBarController.viewControllers是每个选项卡的根视图控制器的数组。您可以通过设置tabBarController.selectedViewController或来设置活动视图控制器tabBarController.selectedIndex

从应用程序委托它是self.window.rootViewController.tabBarController. 从视图控制器它是self.view.window.rootViewController.tabBarController.

[[self.view.window.rootViewController.tabBarController.viewControllers objectAtIndex:2] myFunction]将从另一个视图控制器访问您的功能。那是假设您的第三个选项卡不是导航控制器。

如果您的选项卡中有一个导航控制器,那么您必须在它上面添加导航控制器语法。[[[self.view.window.rootViewController.tabBarController.viewControllers objectAtIndex:2] navigationController].visibleViewController myFunction]将是完整的路径。现在看来,这似乎有点荒谬。

于 2012-05-17T03:06:58.427 回答