テーブルビューで開始するNavコントローラがあります。各行は詳細UIViewにプッシュします。私は親UITableViewに戻ることなく、次と前のビューを表示する詳細UIViewの次と前のボタンを持っていたいと思います。すべての詳細は配列に保存されます。どのようにDetailViewController.m .Thanxでその配列とその現在のインデックスにアクセスすることができますか?次と前へ詳細を表示親に戻ることなくUIViewを表示UITableView
答えて
クリーンな方法はDetailViewControllerのカスタム初期化子を作成することです:
@interface DetailViewController : UIViewController
{
NSArray* allObjects;
NSUInteger displayedObjectIndex;
}
- (id) initWithObjectAtIndex: (NSUInteger) index inArray: (NSArray *) objects;
@end
@implementation DetailViewController
- (id) initWithObjectAtIndex: (NSUInteger) index inArray: (NSArray *) objects
{
self = [super initWithNibName:nil bundle:nil];
if (self) {
allObjects = [objects copy];
displayedObjectIndex = index;
}
return self;
}
@end
こうすることで、DetailViewControllerは常にあれば、それは、の詳細を表示すると、次/前のオブジェクトされているものオブジェクトの両方を知っています。
ありがとうCostique。それは本当にうまくいった。 Thanx man – Piscean
次のページを表示するためにのみ機能します。次のボタンをもう一度クリックすると、空白のページが表示されます。私はdisplayedObjectIndex値にログオンしました。それは、次のボタンをクリックする前に、それと同じ値をdisplayObjectIndexが再び持っているようです。 – Piscean
次の関数のコードは次のようになります。 - (IBAction)nextPage:(id)送信者 { \t displayedObjectIndex ++; \t DetailViewController * nextController = [[DetailViewController alloc] init]; \t NSString * storyyTitle = [[allObjects objectAtIndex:displayedObjectIndex] objectForKey:@ "title"]; \t nextController。title = @ "FindersFee"; \t nextController.sTitle = storyyTitle; \t [self.navigationController pushViewController:nextController animated:YES]; \t [nextController release]; } – Piscean
また、テーブルビューのデータソース(通常はテーブルを含むUIViewController)とディテールビューの間に何らかの接続を構築することもできます。これは典型的なDelegateパターンを使用して行うことができますCocoaフレームワーク。あなたは2つのだけの方法とDetailViewDataDelegateプロトコルを定義することができ、このような場合に :referenceObjectは、呼び出し対象となる
-(id)nextTableObjectFrom:(id)referenceObject;
-(id)prevTableObject;(id)referenceObject;
、それはDetailViewに詳述の目的です。 のでDetailViewはこのように定義されます。
@interface DetailViewController:UIViewController {
}
@property (nonatomic,assign) id currentDetailedObject;
@property (nonatomic,assign) id dataDelegate;
そしてもちろん、あなたがのtableViewからの典型的なコントローラを呼び出すとき:didSelectElementWithIndexPath:アニメーション:
DetailViewController *dv = [[[DetailViewController alloc] initWithNibName:nil bundle:nil] autorelease];
dv.dataDelegate=self;
dv.currentDetailedObject=[mySourceArray objectAtIndexPath:indexPath.row];
[self.navigationController pushViewController:dv animated:YES];
:方法、あなたはこのような何かをします
最後に、DetailViewControllerのテーブルから次の(または前の)要素が必要になったときには、単に
-(IBAction)nextButtonPressed {
self.currentDetailedObject = [self.dataDelegate nextTableObjectFrom:self.currentDetailedObject];
}
を呼び出すだけです。特にテーブルのUIViewControllerに実装されるデリゲートメソッドは、データ構造に依存します。 このアプローチの利点は、一見複雑なことですが、非常にエレガントで、コントローラーに沿ってオブジェクトを渡すことを避けます。これはしばしばメモリーの問題の原因です。デリゲートのアプローチに加えて、任意の複雑な機能を実装することができます(例:DetailViewControllerからテーブルビューオブジェクトを直接操作することもできます)。
申し訳ありませんviggio24です。私はコード全体を理解できませんでした。私はObjective-CとiPhone開発の新機能です。私はどんなファイルDetailViewDataDelegateも持っていません。その代表者ファイルを説明できますか? Thanx – Piscean
もちろん、委任プロトコルを定義する必要があります。したがって、DetailViewDataDelegateをプロトコルとして記述する必要があります。 @protocol DetailViewDataDelegate 2つのデリゲート関数を定義します。このコードは、DetailViewDataDelegateプロトコル実装者として宣言するコントローラに書き込まれます。このコードを書くのに十分なスペースがありませんが、この件に関する偉大なAppleのドキュメントを慎重に読んでください(AppleのObjective-Cプログラミングガイドでは非常に良い説明があります)。デリゲートパターンはココアの基本であるため、この読書をお勧めします。 – viggio24
thanx私はそれを読むつもりです。ウルの助けをもう一度やってみろ。 – Piscean
- 1. 詳細表示の戻るボタン
- 2. UITableViewとその詳細ビューを同じビューに表示する方法
- 3. 詳細表示表示の問題
- 4. QMessageBox "詳細を表示"
- 5. カスタムエンティティの詳細を表示
- 6. 詳細ボタンを表示
- 7. フォームの検証と詳細の表示
- 8. TableViewと詳細ビューのセル表示
- 9. Xamarin iOSの詳細をUITableviewから表示
- 10. アクティブなメンバーの詳細を表示
- 11. PhpStorm - 詳細なdoctag情報を表示
- 12. IEではなく詳細なスクリプトエラーを表示する方法
- 13. MVC3 Razor WebGrid行の詳細を表示するツールチップを表示
- 14. マスター詳細データウィンドウの詳細を新しいウィンドウに表示
- 15. 詳細ビューから戻るときはtableViewCellを強調表示します
- 16. より詳細な "詳細" apache/phpプロセスの表示方法
- 17. テーブルの表示詳細の開示iOS
- 18. android cardview onclick詳細を表示する
- 19. [詳細を表示]をクリックしてコンテンツを表示
- 20. 詳細ログとデバッグログがlogcatに表示されない
- 21. 名前をクリックするとイオンプロジェクトでその詳細を表示したい
- 22. 無限再帰を起こすことなく子供の中にエンティティの詳細を表示する方法
- 23. 詳細SQLDataSourceで表示、2つのテーブルを表示
- 24. 角2/4リスト要素の詳細を表示/非表示
- 25. 500内部サーバーエラーの詳細を表示
- 26. celltableの行の詳細を表示
- 27. Matlab:ファイルブラウザでクラスファイルの詳細を表示
- 28. 文字数 - 詳細を表示
- 29. マスター詳細ページ - Androidのメニューアイコンを表示
- 30. ページのユーザーの詳細を表示
似たような質問 [こちら] [1] [1]:http://stackoverflow.com/questions/6244776/iphone-navigate-to-previous-next-viewcontroller/11617283#11617283 –