gpt4 book ai didi

iOS:NSObject 调用并检测哪个 UIVIewController 进行了调用

转载 作者:行者123 更新时间:2023-11-29 04:42:57 25 4
gpt4 key购买 nike

希望这是一个简单的...

我有一个 NSObject,其方法可在多个 UIViewController 中使用(NSObject 已导入到我的 .pch 文件中)。

UIViewControllers 然后像这样调用 NSObject;

[ThisNSObject doSomething];

这一切都在计划中,所以没有问题......但是,我希望方法 doSomething 能够检测哪个 UIViewController 调用了该 NSObject。然后,根据该信息,我可以以任何给定的方式操作 UIViewController。

我需要这个的原因是因为如果我有一个 UITabBar,每个选项卡都加载不同的 UIViewController,但所有选项卡都调用全局 NSObject,我需要将进一步的操作指向该特定的 UIViewController。

我知道我可以访问keyWindow,但我不确定这正是我想要的。

任何建议都会很好,谢谢。

罗伊

编辑:实际上,也许在 NSObject 中我可以检测当前选择了哪个选项卡,然后获取堆栈中的顶部 View ......并进行类似的引用?有谁知道为什么这是一个坏主意?

最佳答案

我有点同意@drekka的回答,但它有一个问题......代码行:

- (void) viewController:(UIVIewController*)viewController doSomething;

语法不正确。然而,他通过提出另一个正确的解决方案来救赎自己:

- (void) doSomethingWithViewController:(UIViewController*) viewController;

另一种选择是在您的自定义类上使用委托(delegate)并让 viewController 作为委托(delegate)进行订阅,因为在您的情况下将 ViewController 作为参数传递似乎并不真正有意义。例如:

@protocol MyCustomNSObjectDelegate;

@interface MyCustomNSObject : NSObject

@property (nonatomic, assign) id<MyCustomNSObjectDelegate delegate;

- (void) doSomething;

@end

@protocol MyCustomNSObjectDelegate <NSObject>
@required
- (void) myCustomNSObject:(MyCustomNSObject*)myObject takeFurtherActionWithData:(NSString*)someData;
@end

然后在你的 UIViewController 中

#import "MyCustomNSObject.h"

@interface MyUIViewController : UIViewController <MyCustomNSObjectDelegate>

...

然后在调用 doSomething 之前将 MyCustomNSObject 的委托(delegate)属性设置为 UIViewController。在 doSomething 方法中,if 完成“某事”之后,在方法末尾添加:

[self.delegate myCustomNSObject:self takeFurtherActionWithData:@"change this to whatever type you need here"];

希望这有帮助。

关于iOS:NSObject 调用并检测哪个 UIVIewController 进行了调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10081794/

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