当从一个视图控制器单击一个按钮时,我尝试设置第二个视图控制器的NSString属性
CommentsViewController *commentViewController = [[CommentsViewController alloc] init];
STPopupController *commentPopupController = [[STPopupController alloc] initWithRootViewController:commentViewController];
commentPopupController.containerView.layer.cornerRadius = 4;
commentViewController.streamID = trackID;
commentViewController.radioID = radioID;
[commentPopupController presentInViewController:self];
但是当视图控制器显示为弹出窗口时,这些字符串值为空。我错了什么?
@property (strong, nonatomic) NSString *streamID;
@property (strong, nonatomic) NSString *radioID;
视图控制器是启动两次还是什么,我无法找到问题所在。 这是注释视图控制器的初始化方法
- (instancetype)init {
if (self == [super init]) {
self.title = @"Comments";
self.navigationController.navigationBar.tintColor = [UIColor blueColor];
self.contentSizeInPopup = CGSizeMake(self.view.frame.size.width - 50 , self.view.frame.size.height - 150);
// self.landscapeContentSizeInPopup = CGSizeMake(400, 200);
}
return self;
}
答案 0 :(得分:0)
最好的办法是检查调试器。也许您传递的值为空?
将断点放在您认为问题所在的位置。
答案 1 :(得分:0)
如果必须将值传递给导航堆栈中不存在的视图控制器,那么如果要推送故事板上的视图控制器,则必须创建视图控制器实例
STPopupController *objViewController = [Self.storyboard instantiateViewControllerWithIdentifier: @"identifier"];
并传递
之类的值 objViewController.streamID = trackID;
objViewController.radioID = radioID;
如果您使用的是xib,请使用以下
SecondViewController *tempView = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil]
如果我的代码中有任何错误,请更正我,因为我正在通过手机发帖回复。
答案 2 :(得分:0)
如果您在streamID
中访问radioID
或CommentsViewController
,并且没有任何迹象,则很难说明为什么他们没有。
可能是STPopupController
正在其init方法中访问CommentsViewController
上的view属性。在您将任何值实际分配给属性之前,这将导致调用viewDidLoad
方法。
在这种情况下最简单的修复方法是在创建弹出控制器之前分配值。
// I would recommend using initWithNibName:nil bundle:nil here, even if
// you create the view in code.
CommentsViewController *commentViewController = [[CommentsViewController alloc] init];
// assign before creating STPopupController
commentViewController.streamID = trackID;
commentViewController.radioID = radioID;
STPopupController *commentPopupController = [[STPopupController alloc] initWithRootViewController:commentViewController];
答案 3 :(得分:0)
可能是由于初始化失败导致的:
- (instancetype)init {
if (self == [super init]) {
请注意==
应该是:
- (instancetype)init {
if (self = [super init]) {
作业,而不是平等。
答案 4 :(得分:0)
初始化目标控制器:
CommentsViewController *commentViewController = [[CommentsViewController alloc] init];
然后传递数据:
commentViewController.streamID = trackID;
commentViewController.radioID = radioID;
最后,通过以下方式推送STPopupController:
[self.popupController pushViewController:commentViewController animated:YES];
注意: popupController
是STPopupController
附带#import <STPopup/STPopup.h>
的属性