rob*_*408 13 iphone objective-c
我编写了一个UITabBarController子类(调用MainViewController)并添加了一些实例变量,特别是Venue类型的场所.每个标签都MainViewController需要访问场地变量MainViewController.在第一个选项卡中,一个UIViewController名为的子类HomeViewController,我编写了我的viewDidLoad方法并试图输出到NSLog两个...
NSLog(@"%@", self.parentViewController.venue.name);
Run Code Online (Sandbox Code Playgroud)
和
NSLog(@"%@", self.tabBarController.venue.name);
Run Code Online (Sandbox Code Playgroud)
但XCode给出了错误
error: request for member 'venue' in something not a structure or union
Run Code Online (Sandbox Code Playgroud)
我可以从内部访问场地属性,MainViewController所以在那里排除了错误.iPhone模拟器确实看到了两者self.parentViewController并self.tabBarController作为一个实例MainViewController.这条线......
NSLog(@"%@", self.tabBarController);
Run Code Online (Sandbox Code Playgroud)
输出...
2009-06-05 17:54:46.502 Venue[29729:20b] <MainViewController: 0x536600>
Run Code Online (Sandbox Code Playgroud)
由于它被视为一个MainViewController实例,我怀疑使用铸造会有所帮助.我唯一的另一个选择是HomeViewController用场地的副本来初始化,或者我只是做了一些完全错误的' self.parentViewController.venue.name'?谢谢,罗布
Ed *_*rty 27
你做的事情完全错了. parentViewController被宣布为UIViewController. NSLog由于多态性的奇迹,它输出它的真实类型.
UIViewController没有Venue会员 你呢MainViewController.事实上,施放它是正确的答案.一定要导入MainViewController.h.
#import "MainViewController.h"
[...]
NSString *name = ((MainViewController *)self.parentViewController)).venue.name;
Run Code Online (Sandbox Code Playgroud)
另外,还要确保,当然,前提是venue被声明为@propertyMainViewController的,并且name是@property的Venue.
| 归档时间: |
|
| 查看次数: |
38746 次 |
| 最近记录: |