0

我正在iOS中尝试pushViewController。但执行结果如下

我的拳头观

第二视图

当我点击按钮时,它将从视图 A 转换到视图 B。这是我的视图 A 代码

#import <UIKit/UIKit.h>
#import "ViewControllerB.h"

@interface ViewControllerA : UIViewController

-(IBAction)next:(id)sender;

@end

在 .m 文件中

#import "ViewControllerA.h"
@interface ViewControllerA ()
@end

@implementation ViewControllerA
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
}
-(IBAction)next:(id)sender
{
    ViewControllerB *viewController=[[ViewControllerB alloc]init];
    viewController.string=@"tunvir";
    [self.navigationController pushViewController:viewController animated:YES];
}
@end

在视图控制器 B

@interface ViewControllerB : UIViewController

@property (nonatomic,strong)NSString *string;

@end

在 .m 文件中

#import "ViewControllerB.h"

@interface ViewControllerB ()

@end

@implementation ViewControllerB

@synthesize string=_string;

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
}
@end

想要将viewB中的字符串设置为“tunvir”并将对象加载为viewB。但出现了很多警告。为什么会发生这种情况以及如何解决这个问题?谢谢

4

5 回答 5

3

如果您正在使用情节提要,请这样做..

-(IBAction)next:(id)sender 
{

ViewControllerB *viewController=[self.storyboard instantiateViewControllerWithIdentifier:@"viewControllerB"];
viewController.string=@"tunvir";
[self.navigationController pushViewController:viewController animated:YES];
}  

不要忘记给StoryboardIdviewControllerB 作为viewControllerB

于 2013-05-14T10:16:20.077 回答
1

如果只需要为 ViewControllerB 的 navigationBar 设置标题'

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.navigationItem.title = @"Title for NavigationBar";
}

如果您使用情节提要,请编辑使用此

-(IBAction)next:(id)sender
{
UIStoryboard *storyboard = [[UIStoryboard storyboardWithName:@"MainStoryboard" 
                              bundle:NULL]
UIViewController *viewControllerb = [storyboard instantiateViewControllerWithIdentifier:@"ViewControllerB"];
[[self navigationController] pushViewController:viewControllerb animated:YES];
}
于 2013-05-14T09:41:32.083 回答
0

替换ViewControllerB *viewController=[[ViewControllerB alloc]init];

ViewControllerB *viewController=[[ViewControllerB alloc] initWithNibName:@"ViewControllerB" bundle:nil];
于 2013-05-14T09:43:35.380 回答
0

试试下面的代码...

 -(IBAction)next:(id)sender
    {
        ViewControllerB *viewController=[[ViewControllerB alloc]initWithNibName:@"ViewControllerB" bundle:nil];
        viewController.string=@"tunvir";
        [self.navigationController pushViewController:viewController animated:YES];
    }
于 2013-05-14T09:43:37.517 回答
0

你没有正确初始化。使用

ViewControllerB *viewController=[[ViewControllerB alloc] initWithNibName:@"ViewControllerBXIbFileNAme" bundle:nil];

代替

ViewControllerB *viewController=[[ViewControllerB alloc]init];
于 2013-05-14T10:00:37.643 回答