我是IOS的新手。我的第一个类是ViewController。我想将user_id从这个类传递给snsViewController类。但是当我使用@property时,我得到空值。
我在snsViewController.m中编写此代码
ViewController *objViewController=[[ViewController alloc]initWithNibName:@"ViewController" bundle:nil];
[objViewController jsonPost:getpostJson];
Plz建议我解决这个问题
我已在ViewController.m中编写此代码
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
respstring = [[NSString alloc]initWithData:loginJsonData encoding:NSUTF8StringEncoding];
NSLog(@"*******: %@",respstring);
SBJsonParser *objSBJsonParser = [[SBJsonParser alloc]init];
json = [[NSDictionary alloc]initWithDictionary:[objSBJsonParser objectWithString:respstring]];
NSLog(@"json: %@",json);
/}
//-(void)loginjonresponse
// {
NSNumber *error = [json objectForKey:@"error"];
if([error intValue] == 0)
{
NSLog(@"u r connected with webserver ");
}
else
{
NSLog(@"connection fail");
}
NSString *value=[json objectForKey:@"value"];
NSLog(@"value: %@",value);
if (value ==(id)[NSNull null] || value==nil)
{
NSLog(@"login fail");
}
else
{
NSString *user_details=[[json objectForKey:@"value"]objectForKey:@"user"];
// NSLog(@"user_deails%@",user_details);
if ([user_details isEqual:@"false"])
{
[self alertStatus:@"Please enter correct username and password" :@"Login Failed!"];
NSLog(@"incorrect user name password");
}
else
{
user_id=[[[json objectForKey:@"value"]objectForKey:@"user"]objectForKey:@"id"];
NSLog(@"user_id: %@",user_id);
firstname=[[[json objectForKey:@"value"]objectForKey:@"user"]objectForKey:@"firstname"];
NSLog(@"firstname: %@",firstname);
lastname=[[[json objectForKey:@"value"]objectForKey:@"user"]objectForKey:@"lastname"];
NSLog(@"lastname: %@",lastname);
email=[[[json objectForKey:@"value"]objectForKey:@"user"]objectForKey:@"email"];
NSLog(@"email: %@",email);
currentroll_id=[[[json objectForKey:@"value"]objectForKey:@"user"]objectForKey:@"current_roll_id"];
NSLog(@"current_roll_id: %@",currentroll_id);
currentcourse_id=[[[json objectForKey:@"value"]objectForKey:@"user"]objectForKey:@"current_course_id"];
NSLog(@"current_course_id: %@",currentcourse_id);
// [self classlist];
#pragma After successful login move to sns page
snsViewController *objsnsViewController=[[snsViewController alloc]initWithNibName:@"snsViewController" bundle:nil];
[self.view addSubview:objsnsViewController.view];
}
}
}
在这段代码中我得到了user_id值。我想把这个值传递给snsViewController。
答案 0 :(得分:1)
在snsViewController.h文件中获取另一个实例变量并赋予其属性。例如
.h file
NSString *userID;
@property (nonatomic,retain) NSString *userID;
.m file
@synthesize userID
然后在这段代码中
#pragma After successful login move to sns page
snsViewController *objsnsViewController=[[snsViewController alloc]initWithNibName:@"snsViewController" bundle:nil];
objsnsViewController.userID = user_id;
[self.view addSubview:objsnsViewController.view];
答案 1 :(得分:1)
There are many ways you can pass the data from one class to another.
For example lets say one is your model class and two other class is your
viewController class.
现在这是你的模型类,你需要在其中声明访问器方法和指定的初始化器: -
@interface yourmodel : NSObject
@property (nonatomic, strong)NSString *title;
-(id)initWithTitle:(NSString*)title
@implementation yourmodel
-(id)initWithTitle:(NSString*)title
{
self=[super init];
if (self)
{
self.title=title;
}
return self;
}
@end
这是你的firstViewController类,你将把数据发送到第二个视图控制器: -
@class yourmodel
@interface yourFirstViewController : UIViewController
@property (nonatomic,strong)yourmodel *dataModel;
@property (nonatomic,strong)NSMutableArray *yourArray;
@implementation yourFirstViewController
- (void)viewDidLoad
{
yourmodel *model=[[yourmodel alloc] initWithTitle:@"yourString"];
[yourArray addObject:model];
}
//假设这是第一个视图控制器的tableview委托方法 您要将数据发送到第二个视图控制器
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
yourSecondViewController *secondcontroller = [[yourSecondViewController alloc] initWithNibName:
@"yourSecondViewController" bundle:nil];
secondcontroller.dataModel=[self.yourArray objectAtIndex:indexPath.row];
}
@end
现在,这是第二个视图控制器,您需要第一个视图控制器的数据: -
@class yourmodel
@interface yourSecondViewController : UIViewController
@property (nonatomic,strong)yourmodel *dataModel;
@implementation yourSecondViewController
- (void)viewDidLoad
{
NSLog(@"dataModel.title=%@",self.dataModel.title);
}
注意: - 在每个视图控制器中,您需要对模型类的引用进行decalare以接收数据。