在我展示的界面 Controller 中,我有以下代码:
- (IBAction)showModal {
NSArray *namesArray = @[@"A", @"B", @"C"];
NSArray *contextsArray = @[self, self, self];
[self presentControllerWithNames:namesArray contexts:contextsArray];
}
我想做的是将传递的上下文设置为我的模态分页界面 Controller 每个页面上的委托(delegate)属性,如下所示:
#import "ModalPageInterfaceController.h"
@interface ModalPageInterfaceController ()
@property (nonatomic, weak) id delegate;
@end
@implementation ModalPageInterfaceController
- (instancetype)initWithContext:(id)context {
self = [super initWithContext:context];
if (self) {
self.delegate = context;
}
return self;
}
@end
但我发现当调用 initWithContext:
时,除第一页外的所有页面的上下文参数均为 nil,因此我无法为这些页面设置委托(delegate)属性。我做错了什么,还是这只是 WatchKit 的一个错误?
最佳答案
我知道不久前有人问过这个问题,但值得发布一个解决方案。
我相信这是 Beta 3 及更早版本中的 WatchKit 错误。
我发现的唯一方法是在数组中传递参数。
[self presentControllerWithNames:@[@"First", @"Second", @"Third"],
contexts:@[@[self], @[@0, self], @[@0, @1, self]]];
好像只是根除重复的上下文,所以需要不一样。我的接口(interface) Controller 代码被设置为检查上下文是否为数组并枚举以查找第一个非 NSNumber 实例。
This Apple dev forums post解释相同的解决方案,后续消息表明此问题已在 Beta 4 中修复。
关于objective-c - 在 WatchKit 的 presentControllerWithNames 中将自身作为上下文传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27136032/