[英]How do I use a button to get back to my first view
我在xcode中使用單視圖應用程序模板。 我創建了第一個視圖控制器,然后添加了另一個新的.m和.h和xib。
我可以單擊按鈕IBAction並進入第二個視圖,但是我為“后退”按鈕使用的代碼不會使我回到第一個視圖,所有崩潰。 我已包含我的代碼,該代碼似乎遵循我正在使用的教程。 另外,我只是控制單擊我的按鈕,並將該行拖到.h中的IBAction中,以掛接secondViewController按鈕,這是我在第一個視圖控制器上所做的,並且似乎可以在其中運行。
如果有人可以幫助,那就太好了!
//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
使用UINavigation控制器
[self.navigationController popViewControllerAnimated:YES];
您可以使用導航方法從一個視圖控制器切換到另一個。
使用模態視圖可能會更好。 因此,代替addSubView使用:
[payTableView setModalPresentationStyle:UIModalPresentationFullScreen];
[payTableView setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
[self presentModalViewController:payTableView animated:YES];
然后在seconViewController back方法上:
[self dismissModalViewControllerAnimated:YES];
您可以將ModalTransitionStyle更改為蘋果給您的:D
希望這可以幫助
不要將第二個ViewController
添加為該view
的subview
view
。
使用UINavigationController
通過[self.navigationController pushViewController:payTableView animated:YES];
將新的UIViewController
添加到視圖堆棧[self.navigationController pushViewController:payTableView animated:YES];
然后,您可以使用導航控制器的后退按鈕,也可以將自己的按鈕與代碼[self.navigationController popViewControllerAnimated:YES];
或者,您可以使用情節提要和使用簡單的segue。
您需要在此處使用委托:
在第一個視圖的.h中聲明一個成員變量:
@interface FirstViewControllerClassName: UIViewController
{
SecondViewController *payTableView;
}
@property (nonatomic, retain) SecondViewController *payTableView;
在.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
[payTableView.view removeFromSuperview];
我認為您正在刪除整個視圖。這就是為什么應用崩潰的原因
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.