每次视图显示时都会调用 - (void)。 我在两个视图之间旋转,所以当我转到第二个视图然后返回到第一个视图时,我希望从第一个视图自动调用void 我试着这样做 - (void)viewWillAppear:(BOOL)动画和 - (void)viewDidLoad 通过在其中放置NSLog但是当我返回到第一个视图时它不会打印。 有什么建议吗?
答案 0 :(得分:0)
如果要使用第二个数据更新第一个视图,请在正在更新的模型上使用观察者。如果第二个视图作为子视图被删除,您可以观察子视图。或者,您可以使用块回调闭包。
在界面中:
IBAction(^doOnClose)(void);
和
@property (nonatomic, copy) IBAction(^doOnClose)(void);
在关闭第二个视图的方法中:
if(doOnClose) doOnClose();
最后从你的第一个视图中定义它:
view2.doOnClose = ^{/*Do this when view 2 closes*/};
答案 1 :(得分:0)
我在app delegate中有两种方法
-(void)goTo1{
[self.window addSubview:[viewController view]];
[settingsViewController.view removeFromSuperview];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.0];
//removing the settingsViewController form the view and setting the animation
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:window cache:NO];
[UIView commitAnimations];
[settingsViewController release];
settingsViewController = nil; }
和
-(void)goTo2{
//calling the .xib file and the SettingsViewController
SettingsViewController *aSettingsView = [[SettingsViewController alloc] initWithNibName:@"Settings" bundle:nil];
[self setSettingsViewController:aSettingsView];
[aSettingsView release];
[self.window addSubview:[settingsViewController view]];
//moving the view 30px down
[[settingsViewController view] setFrame:CGRectMake(0, 20, 320, 460)];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.0];
//setting the animation
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:window cache:YES];
[UIView commitAnimations];
[webskiAppBetaViewController release];
webskiAppBetaViewController = nil;
}
和2个视图控制器中的IBActions 第一个
-(IBAction)goToView2{
WebskiAppBetaAppDelegate *mainDelegate = (WebskiAppBetaAppDelegate *)[[UIApplication sharedApplication] delegate];
[mainDelegate goTo2];
}
和第二个
-(IBAction)goToView1{
WebskiAppBetaAppDelegate *maniDelegate = (WebskiAppBetaAppDelegate *)[[UIApplication sharedApplication] delegate];
[maniDelegate goTo1];
}
所以现在当我调用goToVIew1时我还想运行一个在视图中的方法1
类似这样的事情
-(IBAction)goToView1{
WebskiAppBetaAppDelegate *maniDelegate = (WebskiAppBetaAppDelegate *)[[UIApplication sharedApplication] delegate];
[maniDelegate goTo1];
[self methodInFirstVIew]; //this method is in the first view
}