0

私は2つのことをUIViewControllers言いましたViewController_AViewController_B

私の流れはAViewController_A ---> BViewController_B ---> CViewController_A

A、B、および C ナビゲーションの場合、次の状況があります。

A -ViewController_Aにある 100 のレコードでUITableViewCell、ユーザーがいずれかを選択すると、ViewController_Bから選択されたレコードが表示されViewController_Aます。

B - から選択したデータが表示されViewController_A、戻るボタンが表示されます (ポップできます)。ユーザーがUIButtonこれをタップすると、再び表示されますViewController_Aが、その単一のレコードのみが表示されます

C - それからポップしても問題はありませんが、もう一度プッシュしViewController_Bたいので(既にインポートしているので、再インポートできませんよね?) でそれらの衝突を作成します。#import ViewController_AViewController_BViewController_BViewController_AViewController_AViewController_BUIViewControllers

Cで問題を解決するためのより良い方法は何ですか? 1 つの提案は、別のようなものを作成`ViewController_Dし、同じように表示することですViewController_Aが、私が既に行っているように、機能のために適切な方法ではないと思いUIますcoded

提案が必要です。ご不明な点がございましたらお知らせください。

4

2 に答える 2

2

#import ディレクティブに問題があることを理解していますか? .h ファイルにヘッダーをインポートしていると思いますか? その場合は、.m ファイルで #import を実行します。.h では @class YouViewControllerA を使用する必要があります。

AViewController の例:

.h

@class BViewController

@interface AViewController : UIViewController 
{
  //Your attributes here
}

@end

.m

#import "BViewController.h"

@implementation AViewController

//Some AViewController methods here

@end

AViewController と BViewController の両方に対してこれを行うと、うまくいくはずです。

編集: #import ディレクティブは再帰エラーを回避するように設計されているため、とにかくエラーが発生することはありません。少し前処理を知っている場合、 #import は次のことを (自動的に) 行います。

#ifndef TOTO_HEADER
#define TOTO_HEADER

//your methods here

#endif

より多くの説明:

#import "toto.h" を記述すると、コンパイル時にコンパイラが次のチェックを行います。

  • 前処理変数「TOTO_HEADER」は定義されていますか?(これは行 ifndef "TOTO_HEADER" に対応します)
  • そうでない場合は、それを定義し (これは #define "TOTO_HEADER" 行です)、メソッドと関数を "含めます"。
  • すでに定義されている場合は、メソッドを含める必要はありません (既に含まれているため)。

このようにして、ヘッダー ファイルが既にインクルードされている場合、それらがインクルードされないようにします。(そして拡張により、再帰的なエラーを起こすべきではありません)。

つまり、 #import を使用すると、ヘッダー ファイルが 1 回だけインクルードされるため、再帰的なインクルードで問題が発生することはありません。

于 2013-01-24T08:05:25.793 に答える
0

1つの解決策はこれかもしれません-

最初に選択した値を NSUserDefaults に保存し、viewController B の UIButton をクリックしたときに bool を取得します。次に、ViewController A にセグエをプッシュし、そこで Bool の値を確認します。true の場合は NSUserDefaults の値のみを出力し、それ以外の場合は 100 レコードのセット全体を出力します。

于 2013-01-24T08:06:41.793 に答える