簡體   English   中英

如何使用按鈕返回到我的第一個視圖

[英]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添加為該viewsubview 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM