0

だから私はNSObjectのサブクラスを作成しましたQuery

@interface Query : NSObject

@property (nonatomic, assign) NSNumber *weight;
@property (nonatomic, assign) NSNumber *bodyFat;
@property (nonatomic, assign) NSNumber *activityLevel;

@end

これは、オブジェクトのプロパティを設定するのに正しいですか?

VC1の場合:

BodyFatViewController *aViewController = [[BodyFatViewController alloc]init];
aViewController.query = self.query;
[self.navigationController pushViewController:aViewController animated:YES];

VC2の場合:

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
    Query *anQuery = [[Query alloc]init];
    anQuery.bodyFat = [self.bodyFatArray objectAtIndex:row];
    anQuery.weight = self.query.weight;
    self.query = anQuery;
}
4

3 に答える 3

2

2つのVC間でオブジェクトを共有するのは完全に自然なことです。

VC1:

@property (strong, nonatomic) Query *query;
@synthesize query=_query;

// init it
self.query = [[Query alloc] init];
self.query.weight = [NSNumber numberWithInt:150];

// when it's time to present VC2:
BodyFatViewController *aViewController = [[BodyFatViewController alloc]init];
aViewController.query = self.query;
[self.navigationController pushViewController:aViewController animated:YES];

そしてVC2では:

// this is in the public interface in VC2.h
//
@property (strong, nonatomic) Query *query;

VC2で割り当て/初期化しないでください。VC1はそれをしました!! ただし、値を自由に設定または上書きしてください...

self.query.bodyFat = [NSNumber numberWithFloat:0.5];
于 2012-04-08T00:11:25.313 に答える
1

新しいクエリを作成しないでください。単にプロパティを使用してください。

self.query.bodyFat = [self.bodyFatArray objectAtIndex:row];
于 2012-04-07T23:12:06.820 に答える
0

はい、それは正しいです。

self.query = newQueryObject

また

myBodyFatViewController.query = newQueryObject

どちらも機能します。

于 2012-04-07T23:54:56.813 に答える