推送视图控制器在ios中无法正常工作

时间:2014-11-02 14:17:38

标签: ios storyboard

我在两个视图控制器之间传递文本字段数据。我有两个视图控制器Firstviewcontroller,Secondviewcontroller。我已经将它们嵌入到导航中但是当我单击第一个视图控制器上的按钮时,第二个视图控制器不显示只有黑屏显示。下面是我的代码。

首先查看controller.h

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

@interface FirstViewController : UIViewController<SecondViewControllerDelegate>

@property(nonatomic) secondViewController *secondview;
- (IBAction)btnclick:(id)sender;

@property (strong, nonatomic) IBOutlet UITextField *textfield1;

@end

首先查看controller.m

- (IBAction)btnclick:(id)sender {
    secondViewController *SecondViewController= [[secondViewController alloc]init];
    SecondViewController.data=self.textfield1.text;
     [self.navigationController pushViewController:SecondViewController animated:YES];

}
- (void)dataFromController:(NSString *)data
{
    [self.textfield1 setText:[NSString stringWithFormat:@"%@",data]];

}

Seconviewcontroller.h

@protocol SecondViewControllerDelegate <NSObject>

@required
- (void)dataFromController:(NSString *)data;

@end
@interface secondViewController : UIViewController
@property (nonatomic, retain) NSString *data;
@property(nonatomic,weak)id<SecondViewControllerDelegate> _delegate;
@property (strong, nonatomic) IBOutlet UITextField *textfield2;

@end

Seconviewcontroller.m

- (void)viewDidLoad {
    [super viewDidLoad];
    self.textfield2.text=[NSString stringWithFormat:@"%@",_data];
    // Do any additional setup after loading the view.
}

原因是什么?

3 个答案:

答案 0 :(得分:2)

您必须使用故事板并让它为您提供视图控制器:

[self.storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"]

或者您可以使用xib文件并告诉视图控制器加载哪个文件:

[[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil]

答案 1 :(得分:0)

  

第二个视图控制器不显示只显示黑屏

通常,这意味着视图控制器没有视图。您的代码没有解释预期secondViewController从哪里获取其视图。是否有 secondViewController.xib ?如果有,是否正确配置了view插座?如果没有,这个视图控制器为了获得它的视图做了什么?

请注意,您使用大写字母做了一件非常奇怪的事情:您给了您的班级一个小写字母(secondViewController),而您的实例有一个大写字母(SecondViewController)。这是倒退而且是一个很大的错误,你应该立即纠正它。也许问题只是资本化问题;如果你打电话给你的班级secondViewController和你的xib文件SecondViewController,那就不匹配,他们就找不到对方了。

答案 2 :(得分:0)

我看到&#34; IBOutlet&#34;在你的代码中,这意味着你在storyboard上创建了secondviewcontroller的用户界面。我猜[[secondViewController alloc] init]没有从storyboard获取UI元素,然后显示黑屏。您必须通过从storyboard文件加载来创建secondViewController的实例。

基本上:

  • 您可以通过故事板文件名获取故事板

  • 在故事板上的
  • ,Secondviewcontroller有一个在 Identity Inspector 中设置的故事板ID,您可以使用它来获取Secondviewcontroller的实例

您可以参考此链接以获取更多详细信息 loading iOS viewcontroller from storyboard 希望这可以提供帮助!