我将数据从一个viewController传递给另一个viewController。但它正在抛出NSException
。
这是我的代码。
viewcontroller.m
NSString *empid1 = [dataDict objectForKey:@"EmployeeId"];
NSLog(@"empid %@",empid1); //it prints 161.
DashBoardViewController *dash = [[DashBoardViewController alloc]initWithNibName:@"DashBoardViewController" bundle:nil];
dash.empid = empid1;
DashBoardViewController.h
@property (strong, nonatomic) NSString * empid;
DashBoardViewController.m
NSString *strURL=[NSString stringWithFormat:@"http://192.168.1.1:8002/api/Case/GetCaseByEmployeeID/?empId=%@",_empid];
它会抛出数据nil.NSException
。任何帮助都将受到赞赏。
答案 0 :(得分:0)
YOURCONTROLLER *chatdetail=[[YOURCONTROLLER alloc] initWithNibName:@"YOURCONTROLLER_IDENTIFIER" bundle:nil];
chatdetail.strTitle = "YOUR VALUE"
[self.navigationController pushViewController:chatdetail animated:YES];
下一个控制器
@property (weak, nonatomic) NSString *strTitle;
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"%@",self.strTitle);
}
答案 1 :(得分:0)
使用此功能您正在使用 storyboard
像这样传递你的价值
[self performSegueWithIdentifier:@"DashBoardViewController" sender:[dataDict objectForKey:@"EmployeeId"]];
使用performSegueWithIdentifier
时使用此方法- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
if ([segue.identifier isEqualToString:@"DashBoardViewController"])
{
DashBoardViewController *dash= segue.destinationViewController;
dash.empid =(NSString *)sender;
}
}
答案 2 :(得分:0)
这种情况正在发生,因为您正在实例化并设置属性DashboardViewController
的{{1}}与执行segue的empid
不同。您使用以下代码实例化它
DashboardViewController instance
但 DashBoardViewController *dash = [[DashBoardViewController alloc]initWithNibName:@"DashBoardViewController" bundle:nil];
dash.empid = empid1;
正在使用DashBoardViewController
正在使用的iOS
创建prepareForSegue
,与您创建的dash
不同。出于调试目的,在empid
属性中添加一些默认值,然后调用performSegueWithIdentifier
。它将调用prepareForSegue
方法。 ViewController 将发生segue作为{ {1}}作为此方法中的参数,其类型为destinationViewController
。覆盖此方法.Downcast UIViewController
为destinationViewController
。记录DashBoardViewController
属性。它将具有默认值。现在empid
的{{1}}属性。它将具有正确的值。所以你的实例在这里没用。
根据 @balkaran singh 的回答,在empid
设置dash
属性,或者如果您想使用empid
变量,则嵌入prepareForSegue
并按照 @HImanshu Moradia 在之前的答案中的建议调用dash
,然后推送navigationController
。