所以,故事板看起来就像一个V,或者什么.
在我的创建项目视图控制器上,当用户创建一个新项目时,我希望它回到根视图控制器,然后推送到视图项目控制器,以便我可以查看新创建的项目.
我似乎无法让这个工作.很容易回到根视图控制器,但是我无法推送该视图项目控制器.
有任何想法吗?我在下面粘贴了我的代码. pop功能有效,但新视图不会出现.
- (voID) onSave:(ID)sender { CLLocation *currentLocation = [[LocationHelper sharedInstance] currentLocation]; // format the thread object dictionary NSArray* location = @[ @(currentLocation.coordinate.latitude),@(currentLocation.coordinate.longitude) ]; NSDictionary* thread = @{ @"Title": _TitleFIEld.text,@"text": _textFIEld.text,@"author": @"mustached-bear",@"location": location }; // send the new thread to the API server [[DerpHipsterapiclient sharedClIEnt] postPath:@"/API/thread" parameters:thread success:^(AFhttpRequestoperation *operation,ID responSEObject) { // init thread object Thread *thread = [[Thread alloc] initWithDictionary:responSEObject]; // init vIEw thread controller ThreadVIEwController *vIEwThreadController = [[ThreadVIEwController alloc] init]; vIEwThreadController.thread = thread; [self.navigationController popToRootVIEwControllerAnimated:NO]; [self.navigationController pushVIEwController:vIEwThreadController animated:YES]; } failure:^(AFhttpRequestoperation *operation,NSError *error) { [self.navigationController popToRootVIEwControllerAnimated:YES]; }];}解决方法 完成您想要做的一个简单的方法是在主根视图控制器中构建一些简单的逻辑 – (voID)vIEwWillAppear方法,并使用委托回调来翻转逻辑开关.基本上是根控制器的“反参考”.这是一个快速的例子.
主控制器(考虑这个控制器a) – 把它称为控制器A
设置属性以跟踪跳转状态
@property (nonatomic) BOol jumpNeeded;
设置一些逻辑
- (voID)vIEwWillAppear:(BOol)animated { [super vIEwWillAppear:animated]; self.jumpNeeded ? NSLog(@"jump needed") : NSLog(@"no jump needed"); if (self.jumpNeeded) { NSLog(@"jumPing"); self.jumpNeeded = NO; [self performSegueWithIDentifIEr:@"controllerC" sender:self]; } }
现在,在你的主根控制器中,当选择一个tablevIEw行时,会做这样的事情
当你在tableVIEw中调用controllerB时,选择了方法
[self performSegueWithIDentifer@"controllerB" sender:self];
然后执行你的准备segue方法
- (voID)prepareForSegue:(UIStoryboardSegue *)segue sender:(ID)sender { //setup controller B if([segue.IDentifIEr isEqualTo:@"controllerB"]){ ControllerB *b = segue.destinationVIEwController; b.delegate = self; //note this is the back reference } //implement controller c here if needed}
现在转到controllerB
您需要设置一个名为“delegate”的属性来保存后面的引用
您需要从根控制器导入头文件
#import "controllerA"@property (nonatomic,weak) controllerA *delegate;
那么在你d回到controllerA之前,你设置了标志
self.delegate.jumpNeeded = YES; [self.navigationController popVIEwControllerAnimated:YES];
就是这样.你不必与controllerC做任何事情.还有一些其他的方法可以做,但这是很简单的,为您的需要.希望它适合你.
总结以上是内存溢出为你收集整理的ios – 如何d回到根视图控制器,然后再推到不同的视图?全部内容,希望文章能够帮你解决ios – 如何d回到根视图控制器,然后再推到不同的视图?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)