1

私は IOS、Xcode、および MVC を初めて使用します。私は学習曲線が急で、最も基本的なタスクであると想定していることに失敗しています。

2 つのタブを持つタブ付きアプリケーションがあります。両方のタブ ビューが Web サービスと通信し、各タブ ビューに画像を追加して、接続状態を示すように画像を変更したいと考えています。

そこで、コントローラー クラス (IconViewController) を含む 3 つ目の .xib ファイルを作成しました。各タブ ビューでこのアイコン ビューのインスタンスを追加および削除したいと考えています。

私のアイコンビューの疑似コードは次のとおりです。

@interface IconViewController : UIViewController
{
    UIImageView *_icon;
}

@property (nonatomic) IBOutlet UIImageView *icon;

- (void)setForBusy;
- (void)setForOk;
- (void)setForFail;

そして実装:

@implementation IconViewController

@synthesize icon = _icon;

-(void)setForBusy
{
    // Set Busy Icon Image
}

-(void)setForOk
{
    // Set Ok Icon Image
}

-(void)setForFail
{
    // Set Fail Icon Image
}

アイコン IBOutlet は、付属の xib ファイルの UIImageView に接続されています。

ルート タブ コントローラーの 1 つを次に示します。

#import "IconViewController.h"

@interface TaboneViewController : UIViewController
{
    IconViewController *_iconViewController;
}
@property (nonatomic) IBOutlet IconViewController *iconViewController;

と実装:

@synthesize iconViewController = _iconViewController;

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.iconViewController = [[IconViewController alloc]
                            initWithNibName:@"iconViewController"
                            bundle:nil];
    [self.view addSubview:self.iconViewController.view];
}

tabView xib Interface Builder で、オブジェクトを追加し、それをクラス タイプIconViewControllerにしました。Icon View Controller Object->Reference OutletFile Owner->iconViewController Outletに接続しました。

プロジェクトを実行すると、エラーが発生します。
「iconViewController」ペン先をロードしましたが、ビュー アウトレットが設定されていませんでした。

他の接続を試してみましたが、うまくいきませんでした。私の最初の接続は機能するはずですが、機能しません。

私が何を誤解しているのか分かりますか?原則は適切ですか (3 番目のビューのインスタンスを 2 つのルート ビューにロードする)? もしそうなら、どのコンセントに接続する必要がありますか?

どうもありがとう、ポリー

4

1 に答える 1

1

私はあなたの問題を見ます。両方のタブに共通の画像のステージが必要です。UIView(またはUIImageView)のサブクラスを実装し、set(void)setForBusyなどのすべてのメソッドを実装する方が良いと思います。親ViewControllerから受け取る必要がある画像のステージ、UINavigationViewコントローラーのようなもの(持っている場合)。それ以外の場合は、ステージを別の場所に保存する必要があります。私の個人的な意見では、目的のためだけに新しいコントローラーを作成するには費用がかかりすぎます。

それが役に立てば幸い。

于 2012-08-10T10:12:28.430 に答える