gpt4 book ai didi

iOS:从另一个类访问 Storyboard TabBar ViewController

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:33:05 24 4
gpt4 key购买 nike

我有以下问题:我使用 Storyboard 创建了一个 iOS 5 SDK 应用程序,其中包含一个 TabBar 和三个 ViewController。从另一个类 (Receiver.m) 我想访问一个 UI 标签,例如ThirdViewController.m,它是 TabBar 的三个 ViewController 之一。

在 ThirdViewController.h 中我得到了

@interface ThirdViewController : UIViewController {
}
@property (weak, nonatomic) IBOutlet UILabel *textlabel1;
@end

在 ThirdViewController.h 中:

@implementation ThirdViewController
@synthesize textlabel1;
...

这似乎没问题,因为我可以从 ThirdViewController 实例中设置标签属性。现在要从 Receiver.m 中获取访问权限,我使用:

   UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[NSBundle mainBundle]];
ThirdViewController *myVC = [storyboard instantiateViewControllerWithIdentifier:@"ThirdViewController"];
myVC.textlabel1.text = @"Hello";

这是行不通的。我不想创建 ThirdViewController 的新实例,而是访问现有实例以仅更新 UILabel。 Project Navigator 中的我的 Storyboard默认命名为 MainStoryboard.storyboard 。我在获取 ThirdViewController 类实例时做错了吗?

错误说:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 
'Storyboard (<UIStoryboard: 0x190590>) doesn't contain a view controller with
identifier 'ThirdViewController''

谢谢!

最佳答案

我有一段时间没有关注这个线程,但是为了那些对它的工作原理感兴趣的人,我发布了这个,虽然我不会在我的代码中使用它(感谢上面@jrturton 的评论)

// Bad style:
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
NSArray *vcs = appDelegate.window.rootViewController.childViewControllers;
YourFirstViewController *fvc = [vcs objectAtIndex:0];
YourSecondViewController *svc = [vcs objectAtIndex:1];

因此,我会将 jrturton 的回答标记为已接受。

关于iOS:从另一个类访问 Storyboard TabBar ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9139212/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com