에 viewcontroller
에서 viewcontroller
으로 전송하려는 데이터로 오버로드하는 대신 프로젝트를보다 체계적으로 유지하고 싶습니다. 더 체계적인 방식으로 유지하는 데 도움이되는 모델 클래스를 만들고 싶습니다. 그러나 모델을 사용할 때 컨트롤러간에 데이터를 전송하는 데 어려움을 겪고 있습니다. 이 nsstring 데이터를 ViewController1
에서 ViewController2
으로 전송할 때 내 방식의 오류를 보여 주시겠습니까? 추신 내 실제 프로젝트가 좀 더 어수선하기 때문에이 모범을 보였으므로 어떤 모순이든 미리 사과드립니다.ViewControllers간에 데이터를 전송하는 데 도움이 필요합니다.
ViewController2.m
에서 NSLog
보고 널 (null)에 다음과 같은 결과 ViewController1.m
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
ViewController2 *viewController2 =[[ViewController2 alloc]init];
ViewControllerModel *vcm = [self.array objectAtIndex:indexPath.row];
NSLog(@"%@",vcm.string) // this will output a number
[self.navigationController pushViewController:viewController2 animated:YES];
}
// this delegate fetches an array of json data
-(void)fetchedResults:(NSMutableArray*)arrayList{
self.array = arrayList;
}
ViewController2.m
- (void)viewDidLoad
{
ViewControllerModel *vcm = = [[ViewController alloc] init];
[super viewDidLoad];
NSLog(@"%@",vcm.string); // this will output null.
}
ViewControllerModel .H # import를
@interface ViewControllerModel : NSObject
@property (nonatomic, strong) NSString *string;
@end
ViewControllerModel.m
#import "ViewControllerModel.h"
@implementation ViewControllerModel
@synthesize string;
@end
MyHandler.m
//this is where vcm.string in ViewController1.m will get all the numbers not sure if this is needed but just in case .
for (NSDictionary *dict in responseArray)
{
ViewControllerModel *vcm = [[ViewControllerModel alloc] init];
vcm.string = ([dict valueForKey:@"string"] == [NSNull null]) ? @"" : [NSString stringWithFormat:@"%@",[dict valueForKey:@"string"]];
"@property (nonatomic, strong) NSString * string;"모델 문자열 내에 데이터가 저장되는 방법은 구현할 방법이 있습니까? 그리고 viewcontroller2 문자열 속성을 쓸 필요가 없습니다? 그렇지 않다면 모델 클래스 안에 데이터를 유지하는 것을 선호합니다. – user3192186
그것이 지금하는 일입니다.코드에서 여전히 작동하지 않는 부분은 vcm을 설정하는 곳입니다. 코드의 한 부분 (MyHandler)에 설정하고 다른 부분 (tableView : didSelectRowAtIndexPath :)에 사용하려면 ViewController1에 속성을 만들어야합니다. – Jesse
오케이. 알겠습니다. 그것을 구현합니다. – user3192186