ストーリーボードを使用してiOS5でアプリを作成しています。ナビゲーションコントローラーに埋め込まれたtableviewcontrollerがあり、tableviewcontrollerのセルをクリックすると、そのセルトピックに関する詳細が詳細ビューに渡されます。 plistを使用して、テーブルビューと詳細ビューにデータを入力します。ストーリーボードを使用せずにこれをうまくやったが、ストーリーボードの使い方を学びたい。 tableviewcontrollerから詳細ビューに移動します。
シークの私のコードは次のとおりです。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"DetailViewControllerSeque"])
{ DetailViewController *detailViewController = [segue destinationViewController];
NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *finalPath = [path stringByAppendingPathComponent:@"questList.plist"];
NSArray *tempArray = [finalPath valueForKey:@"description"];
NSString *descriptionString = [tempArray valueForKey:@"description"];
detailViewController.detailDescriptionText.text = descriptionString;
}
}
助けてくれてありがとう。
私は同じ問題を抱えていました(iOS5の経験不足から)。
これは、テーブルセルがタップされたときにセグエを使用するテーブルビューを備えたiOS5 SDKのサンプルアプリであることがわかります: "Simple Drill Down"。
テーブルセルにセグエを設定し、ストーリーボードファイルに名前を付けます。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
/*
When a row is selected, the segue creates the detail view controller as the destination.
Set the detail view controller's detail item to the item associated with the selected row.
*/
if ([[segue identifier] isEqualToString:@"ShowSelectedPlay"]) {
NSIndexPath *selectedRowIndex = [self.tableView indexPathForSelectedRow];
DetailViewController *detailViewController = [segue destinationViewController];
detailViewController.play = [dataController objectInListAtIndex:selectedRowIndex.row];
}
}
同じ問題が発生しました。RayWenderlichチュートリアルの次の部分で、テーブルセルを選択し、Ctrlキーを押しながらビューコントローラーにドラッグする必要があることがわかりました。次に、performSegueWithIdentifier
のdidSelectRowAtINdexPath
を呼び出します。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self performSegueWithIdentifier:@"mySegueId" sender:self];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSLog(@"prepareForSegue: %@", segue.identifier );
if ([segue.identifier isEqualToString:@"mySegueId"])
{
DetailController *detailController = segue.destinationViewController;
detailController.delegate = (id)self;
detailController.selected = selectedRow;
}
}
呼び出し不要:_[self performSegueWithIdentifier:@"mySegueId" sender:self];
_
_NSIndexPath *selectedRowIndex = [self.tableView indexPathForSelectedRow];
_を使用して、- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{...}
関数で選択した情報を取得できます。
この方法を試してください
あなたのセグエ名(テーブルビューセルから詳細ビューまで)。次に、
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([segue.identifier isEqualToString:@"yourSegueName"]){
DetailViewController * detailViewController =segue.destinationViewController;
detailViewController =[self.yourTableViewDataArray objectAtIndex:[self.yourTableView indexPathForSelectedRow].row];
}
}
SecondViewController/DetailViewControllerをインポートすることを忘れないでください
同じ問題が発生しましたが、ストーリーボードではまだ解決していません。ただし、セグエはtableviewcontroller全体ではなく、セルから開始する必要があると思います。プロトタイプセルを使用している場合、これは機能しますが、コードで作成されたセルタイプについてはわかりません。このトピックに関するどんな助けも感謝します。
編集: http://kurrytran.blogspot.com/2011/10/ios-5-storyboard-and.html のチュートリアルは、セグエソリューションが存在せず、次のように移行する必要があることを示唆していますコード内の詳細ビュー。これがどれほど正しいかはわかりませんが、誰かが純粋なストーリーボード/セグエソリューションを見せてくれるまでは、そのようにします;)。