我在xcode中使用单个视图应用程序模板。我创建了第一个视图控制器,然后使用新的.m和.h以及xib添加了另一个视图控制器。
我可以单击按钮IBAction,然后进入我的第二个视图,但是我用于“后退”按钮的代码不会将我带回到我的第一个视图,一切都崩溃了。我已经包含了我的代码,它似乎遵循我正在使用的教程。另外我只是控制点击我的按钮并将线拖到.h中的IBAction以挂钩第二个ViewController按钮,这是我在第一个视图控制器上做的,它似乎在那里工作。
如果有人能提供帮助那就太棒了!
//from my first view controller .h which works
-(IBAction) buttonPressedPayTable: (id) sender;
//from my first view controller.m which also works and gets me to the second view
-(IBAction) buttonPressedPayTable: (id) sender
{
SecondViewController *payTableView = [[SecondViewController alloc]
initWithNibName:@"SecondViewController" bundle:nil];
[self.view addSubview:payTableView.view];
}
//from my second view controller .h that will not get me back to the first view without crashing
#import <UIKit/UIKit.h>
@interface SecondViewController : UIViewController
{
}
-(IBAction) back: (id)sender;
@end
//from my second view controller .m which doesn't seem to work
#import "SecondViewController.h"
@implementation SecondViewController
-(IBAction) back: (id)sender
{
[self.view removeFromSuperview];
}
@end
答案 0 :(得分:1)
使用UINavigationcontroller
[self.navigationController popViewControllerAnimated:YES];
答案 1 :(得分:0)
您可以使用导航方法从一个视图控制器切换到另一个视图控制器。
答案 2 :(得分:0)
使用模态视图可能会更好。所以代替addSubView使用:
[payTableView setModalPresentationStyle:UIModalPresentationFullScreen];
[payTableView setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
[self presentModalViewController:payTableView animated:YES];
然后在seconViewController上返回方法:
[self dismissModalViewControllerAnimated:YES];
你可以将ModalTransitionStyle改为苹果给你的几个:D
希望这有帮助
答案 3 :(得分:0)
请勿将第二个ViewController
添加为subview
的{{1}}
使用view
使用UINavigationController
将新UIViewController
添加到视图堆栈
然后,您可以使用导航控制器后退按钮,或使用您自己的代码[self.navigationController pushViewController:payTableView animated:YES];
或者,您可以使用Storyboard并使用简单的segue。
答案 4 :(得分:0)
您需要在此处使用委托:
在第一个视图的.h中声明一个成员变量:
@interface FirstViewControllerClassName: UIViewController
{
SecondViewController *payTableView;
}
@property (nonatomic, retain) SecondViewController *payTableView;
in .m:
@synthesize payTableView;
-(IBAction) buttonPressedPayTable: (id) sender
{
if (!payTableView)
payTableView = [[SecondViewController alloc]
initWithNibName:@"SecondViewController" bundle:nil];
payTableView.delegate = self;
payTableView.isFinishedSelector = @selector(removeView);
[self.view addSubview:payTableView.view];
}
- (void)removeView
{
[payTableView.view removeFromSuperview];
[payTableView release];
payTableView = nil;
}
//Just declare a member variable delegate in secondviewcontroller like:
#import <UIKit/UIKit.h>
@interface SecondViewController : UIViewController
{
id delegate;
SEL isFinishedSelector;
}
@property (nonatomic, assign) id delegate;
@property (nonatomic, assign) SEL isFinishedSelector;
-(IBAction) back: (id)sender;
@end
#import "SecondViewController.h"
@implementation SecondViewController
@synthesize delegate;
@synthesize isFinishedSelector;
-(IBAction) back: (id)sender
{
if ([self.delegate respondsToSelector:isFinishedSelector])
[self.delegate performSelector:isFinishedSelector];
}
@end
答案 5 :(得分:0)
[payTableView.view removeFromSuperview];
我认为你正在移除整个视图。这就是应用程序崩溃的原因