我意识到已经提出了类似的问题,但是花了好几个小时试图解决问题。我是新手。我敢打赌,这只是一个导入声明或变量声明。
我使用标签式FirstViewController来调用其上有TableView的SecondVieWController。表的输出被捕获在SecondViewController上的表下面的标签tableOutput中。 [它的工作原理。]我按下选项卡并返回FirstViewController。如何访问tableOutput值,例如,将其放入名为titleLabel的标签中?
我尝试了各种变体 titleLable.text = SecondViewController.tableOutput.text
但只是得到“在UIViewController类型的对象上找不到属性tableOutput”的错误消息。
我能够在iPad应用程序中使用弹出控制器来完成它,但是从使用iPhone选项卡式视图控制器开始实现类似的操作时遇到了麻烦。
我做错了什么?
感谢。
-Rob
答案 0 :(得分:1)
您需要做的是获取对实际SecondViewController
对象的引用。我能想到的最简单的方法是创建一个IBOutlet连接到SecondViewController
对象,然后通过该成员访问标签。
在FirstViewController.h中:
#import "SecondViewController.h"
@interface
@property(nonatomic, retain) IBOutlet SecondViewController *secondView;
@end
在FirstViewController.m中:
@implementation FirstViewController
@synthesize secondView;
一旦声明了,请进入你的xib文件,并在FirstViewController和SecondViewController之间建立链接
然后您可以访问tableOutput
标签
secondView.tableOutput.text;
编辑:
查看最初设置新选项卡式应用程序的方式,您的视图控制器可能是在AppDelegate.m文件中的代码中创建的,如下所示:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.
UIViewController *viewController1 = [[[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil] autorelease];
UIViewController *viewController2 = [[[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil] autorelease];
self.tabBarController = [[[UITabBarController alloc] init] autorelease];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, nil];
self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];
return YES;
}
使用与上面概述的相同的想法,只有您不需要将链接声明为IBOutlet:
@property (nonatomic, retain) SecondViewController* secondView;
然后在创建viewcontrollers时,您可以将其更改为
FirstViewController *viewController1 = [[[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil] autorelease];
SecondViewController *viewController2 = [[[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil] autorelease];
viewController1.secondView = viewController2;
然后按我原来显示的那样访问标签
答案 1 :(得分:0)
对于有类似需求的其他人:
感谢Dan F,我仍然无法让我的应用程序将一个VC中的表输出传递给另一个VC。在此YouTube视频中,Connor Denman提供了一个解决方案: http://www.youtube.com/watch?v=_5cW90_aYqg
tableOutput.text = [NSString stringWithFormat:@“%@”,[tableArray objectAt Index:indexPath.row]];
如视频所示,在AppDelegate中定义类和字符串变量。 (例如appDelegate和myString)
将tableOutput的值分配给变量:
appDelegate.myString = tableOutput.text
在另一个视图控制器的viewWillAppear例程中,使用
titleLabel.text = appDelegate.myString
该视频显示了您需要的导入,声明,@属性和@synthesis语句。
- 感谢Connor,以及上面的Dan,感谢他们的帮助。
-Rob