如何在我的应用程序中获取对某些视图控制器的引用?,我不需要视图控制器 我只需要对该控制器的引用,以便我可以使用其方法并更新其属性。
谢谢
两者之间有父子关系吗?
如果是这样,您可以执行以下操作
@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
的共享类。
这取决于您的实现,如果 viewController 可见或位于内存中,您可以通过创建属性然后访问其属性(属性、方法)在其他类中访问它。
当您使用
performSegueWithIdentifier:
您将获得委托方法
prepareForSegue:
它传递具有属性destinationViewController
和sourceViewController
的UIStoryBoardSegue
从这个答案:
- (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];
}
}
如果您使用的是 UINavigationController
,则可以执行此操作以获取任何索引处的View Controller
UIViewController *targetViewController = [self.navigationController.viewControllers objectAtIndex:([self.navigationController.viewControllers count]-1)];