我可以将segues与视图控制器的指定初始化器一起使用吗?
我是故事板的新手,我已经设置了一个从按钮到视图控制器的segue。 此视图控制器是自定义子类SFListViewController
,它具有指定的初始化程序initWithList:
.
使用指定的初始化程序是正确初始化视图控制器的唯一方法。 但是,当使用segue时,不会调用指定的初始值设定项(显然)。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([segue.identifier isEqualToString:@"Show List"]) { SFListViewController *listViewController = segue.destinationViewController; // ???? } }
如何在执行时让segue调用指定的初始值设定项?
据我所知,这是不可能的,因为故事板框架只是在您在Interfacebuilder中定义的类上调用alloc
和init
。 此外,segue的destinationViewController
属性是只读的,因此您不能简单地替换现有的ViewController。
使用Storyboarding的唯一方法可能是创建一个包装类,它在内部实例化具有所需属性的SFListViewController
,然后作为代理对象运行,从而将viewDid***
和viewWill***
-methods传播到包装类和还在readonly view
属性中返回包装的VC view
……你明白了。
通常,在这种情况下,有许多其他方法可以初始化UIViewController
:
-
可以选择指定“用户定义的运行时属性”,可用于初始化。
-
在您的根ViewController中覆盖
prepareForSegue:
方法,就像您尝试的那样,并在那里执行“post-alloc-init-initialisation”。 -
如果最坏的情况发生,您可以回退到
IBAction
,以便能够自己初始化ViewController。
我希望这有帮助。
编辑:我可以validation代理方法是否有效,因为我刚刚遇到ABPeoplePickerNavigationController
的类似问题,这种方法运行良好。 由于我们在故事板中设置了这个东西,请注意你必须使用awakeFromNib
来进行初始配置(而不是一些init
方法)。
这是我的包装类的代码:
#import "PeoplePickerViewControllerWrapper.h" @implementation PeoplePickerViewControllerWrapper @synthesize ppvc = _ppvc; // This is the object I'm proxying (The proxyee so to speak) @synthesize delegate = _delegate; - (void)awakeFromNib { self.ppvc = [[ABPeoplePickerNavigationController alloc] init ]; self.ppvc.peoplePickerDelegate = self; self.ppvc.addressBook = ABAddressBookCreate(); self.ppvc.displayedProperties = [NSArray arrayWithObject:[NSNumber numberWithInt:kABPersonPhoneProperty]]; } #pragma mark - View lifecycle - (void)loadView { [super loadView]; [self.ppvc loadView]; } - (void)viewDidLoad { [super viewDidLoad]; [self.ppvc viewDidLoad]; } -(void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; [self.ppvc viewWillAppear:animated]; } -(void)viewDidDisappear:(BOOL)animated{ [super viewDidDisappear:animated]; [self.ppvc viewDidDisappear:animated]; } -(UIView *)view{ return self.ppvc.view; } - (void)viewDidUnload { [super viewDidUnload]; [self.ppvc viewDidUnload]; }
- animationUITextField子类的位置时文本跳转
- 企业应用程序下载无法连接到“网站地址”错误
- 在Google Maps SDK中的InfoWindow / Marker上添加Click事件,以实现本机iOS / Objective C
- 将视图推送到不在相同视图层次结构中的UINavigationController
- NSInvocation和内存问题
- ios定期获取我的位置,并设置button来获取我的位置 – 谷歌地图不工作
- 什么时候应该使用NSString和NSMutableString?
- 我是新的客观的C语言我试图在目标c上设置Tableviewcell的进度条,但进度条不更新
- 取消自定义相机的取消button