当我在导航控制器中推动viewcontroller时,显示黑屏 - 空视图

时间:2015-09-30 13:06:19

标签: ios objective-c

我尝试使用storyboard instantiateViewControllerWithIdentifier,它工作正常,但我需要委托方法所以我在打开时添加下面的代码 来自FirstViewController的SecondViewController,

SecondViewController *svc=[[SeconViewController alloc] init];
svc.delegate=self;
[self.navigationController pushViewController:svc animated:YES];

但它会打开黑屏。非常感谢任何排序帮助。谢谢。

secondViewController.h文件

@protocol sendDataToAudioDelegate <NSObject>

-(void)sendData:(NSMutableArray *) data;
@end

@interface AudioSavedFilesViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>

@property (strong, nonatomic) IBOutlet UITableView *fileTable;
@property (strong, nonatomic)  NSMutableArray *selectedIndices;
@property (strong, nonatomic) AVAudioPlayer *audioplayer;
- (IBAction)selectedFiles:(id)sender;
@property (nonatomic,assign)id <sendDataToAudioDelegate> delegate;

@end

2 个答案:

答案 0 :(得分:1)

下面:

SecondViewController *svc= [self.storyboard instantiateViewControllerWithIdentifier @"identifier"]; 
svc.delegate=self;

您正在尝试设置SecondViewController的委托属性。但是这样做时会出现错误:

  

在对象类型&#39; UIViewController&#39;

上找不到属性委托

建议您的SecondViewController类没有名为delegate的属性。因此你需要:

@interface SecondViewController

@property (nonatomic, assign) id delegate;

@end

答案 1 :(得分:0)

原因是您正在创建SecondViewController的全新实例并将其推送到navigationController。您根本没有使用storyboard场景,因此,您添加和连接的所有UI元素都无法正常工作。您需要使用instantiateViewControllerWithIdentifier

恢复您的操作方式

你仍然可以使用delegate,因为你这样做:

SecondViewController *svc= [self.storyboard instantiateViewControllerWithIdentifier @"identifier"]; 
svc.delegate=self;
[self.navigationController pushViewController:svc animated:YES];

修改 看完你的评论后...... 我认为你没有在故事板中设置场景来使用SecondViewController

所以你需要复制这个: enter image description here