私はAppleが提供するチュートリアルを試し、鳥の目撃用のアプリである 「MySecondiOSApp」を改善しようとしました。(入力されたすべての目撃情報が一覧表示されるMasterViewがあります。1つをクリックすると、目撃情報のDetailViewに移動します。目撃情報を追加すると、名前と場所の入力を求められます。)
鳥の名前と場所を入力するためのビューを分割したいと思います。
したがって、2つのビュー(1つは名前の入力用、もう1つは場所の入力用)と、保存したいオブジェクトがあります。
ファイルBirdSighting.m
に次のメソッドを追加しました
-(id)initWithNameOnly:(NSString *)name date:(NSDate *)date
{
self = [super init];
if (self) {
_name = name;
_date = date;
return self;
}
return nil;
}
と
-(id)setLocation:(NSString *)location
{
if (self) {
_location = location;
return self;
}
return nil;
}
AddSightingNameViewController.m
私は次のコードを実装しました
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"ToLocation"])
{
if ([self.birdNameInput.text length])
{
BirdSighting *sighting;
NSDate *today = [NSDate date];
sighting = [[BirdSighting alloc] initWithNameOnly:self.birdNameInput.text date:today];
self.birdSighting = sighting;
}
}
}
名前を入力するためのビューは、ロケーションビューへのプッシュセグエでつながります。他にあまり変更はありません。
では、最初のビューで生成されたオブジェクトを2番目のビューに渡すにはどうすればよいですか?setLocation
そして、この特定のオブジェクトのメソッドをどのように呼び出すのAddSightingLocationViewController.m
ですか?別のプロパティを定義する必要がありますか?そして、場所を入力した後、最終的にマスタービューに正しいデータでオブジェクトを表示するにはどうすればよいですか?
このコードはまだ機能していないので、機能しているかどうか、何をしようとしているのかさえわかりません。ですから、これがくだらないコードである場合は、優しくしてください。