如何在我的应用程序中获取对某些视图控制器的引用?,我不需要新的副本 view controller我只需要对该控制器的引用,这样我就可以使用它的方法并更新它的属性。
感谢
答案 0 :(得分:1)
两者之间是否存在亲子关系?
如果是这样,您可能会执行类似
的操作@interface ChildVC : UIViewController
@property (nonatomic, assign) ParentVC *parent;
@end
和ParentVC
:
- (void)methodThatShowsOrCreatesChildVC
{
// ...
ChildVC *childVC = [[ChildVC alloc] init];
childVC.parent = self;
// ...
}
在ChildVC
:
- (void)methodThatChangesSomethingOnParent
{
[[self parent] changeSomethingOnParent:something];
}
如果没有父子关系,这听起来像不必要的耦合。而不是那样,你可以尝试:
NSNotification
NSObject
的共享类,其中包含共享的“关注点”。答案 1 :(得分:0)
这取决于您的实现,如果viewController可见或在内存中,您可以通过创建属性然后访问其属性(属性,方法)来访问其他类。
答案 2 :(得分:0)
使用
推送新视图控制器时performSegueWithIdentifier:
您将获得委托方法
prepareForSegue:
通过具有属性UIStoryBoardSegue
和destinationViewController
sourceViewController
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"segueName"])
{
YourViewController *vc = [segue destinationViewController];
// Pass any objects to the view controller here, like...
[vc setMyObjectHere:object];
}
}
答案 3 :(得分:0)
如果您使用UINavigationController
,则可以执行此操作以获取View Controller
任何索引
UIViewController *targetViewController = [self.navigationController.viewControllers objectAtIndex:([self.navigationController.viewControllers count]-1)];