11

私はIOS開発にまったく慣れていないので、ここでこれまで遭遇したことのない問題に直面しています。これが私が持っているものです:

プロジェクトを作成し、独自のクラスにアタッチされたViewControllerをいくつか追加しました。しかし今、ストーリーボードに新しいViewControllerを追加しました。次に、新しいObjective-Cクラスを作成しました(UIViewControllerのサブクラスです)。問題は、IBで提供されるリストにクラスがないため、ViewControllerを新しく作成されたクラスにリンクできないことです(下の画像を参照)。私の新しいクラスはと呼ばMapShownViewControllerれていますが、画像でわかるように、利用できません。

ここに画像の説明を入力してください

他のすべてのクラスではうまく機能しましたが、このクラスでは機能しませんでした。

これがMapShownViewController.hです:

#import <UIKit/UIKit.h>

@interface MapShownViewController : UIViewController

@end

そしてMapShownViewController.m:

#import "MapShownViewController.h"

@interface MapShownViewController ()

@end

@implementation MapShownViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
}

- (void)viewDidUnload
{
    [super viewDidUnload];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

@end

誰かが私が間違ったことを説明してもらえますか?

4

9 に答える 9

25

私はこの正確な問題を抱えていました、そしてそれは私を怒らせました。XCodeを4.1から4.4にアップグレードした後、最初に気づきました。以前のバージョンのXCodeで作業していた既存のプロジェクトがあり、4.4でも作業を続けました。私はあなたがしたことを正確に行い、ストーリーボードに新しいビューを作成してからサブクラスファイルを作成しましたが、IBの[カスタムクラス]ドロップダウンでクラスを使用できませんでした。グーグルとフラストレーションを何度も繰り返した後、Xcodeを終了して(閉じるだけでなく、完全に終了して)、再起動しました。その後、まるで魔法のようにすべてが機能し始め、新しいクラスがIBカスタムクラスのドロップダウンですぐに利用できるようになりました。

于 2012-08-14T12:19:52.827 に答える
17

同じ問題が発生し、XCodeを再起動しても役に立ちませんでした。ストーリーボードをいつでも右クリックして、を選択できますOpen As > Source Code。XMLファイルでViewController要素を見つけて、customClass属性を追加します。

<viewController title="Login" id="TJH-Bg-q4u" customClass="XYZLoginViewController" sceneMemberID="viewController">
   ...
</viewController>

手動オーバーライドFTW:)。

于 2013-12-10T18:29:19.253 に答える
4

プロジェクトの設定を確認してください。xcode->targets->ビルドフェーズ->コンパイルソースビューコントローラの実装ファイルをこのリストに追加する必要があります。

于 2012-08-14T10:50:59.607 に答える
4

これが機能するためには、次のことを確認する必要があります。

1)ストーリーボードに追加された要素はUIViewControllerです

2)定義したクラスには、スーパークラスとしてUIViewControllerがあります

@interface MapShownViewController : UIViewController

3)クラスはプロジェクトで正しく構築されています。

于 2012-08-14T11:12:31.460 に答える
1

私はこの問題に遭遇し、ここに掲載されている他のすべての解決策を試しました。

私のために働いたのは、カスタムクラスを作成した後に正しいスーパークラスを設定することでした。次に、クラスのドロップダウンからそれを見つけて選択できるはずです。

例えば

class LabsViewController: UITableViewController {
于 2016-04-27T00:43:55.177 に答える
0

新しいクラスで正しいスーパークラスを選択したかどうかを確認してください。UITableVIewControllerによって継承されるViewControllerを作成する場合があります。これは、ストーリーボードのViewControllerパターンには適用できません。

于 2012-08-14T10:50:34.513 に答える
0

UIViewControllerから継承し、テーブルビューコントローラーとして機能するカスタムクラスをUITableViewControllerに設定する必要がありました。簡単なトリックを作成し、カスタムクラスの継承を「:UITableViewController」に変更しただけで、このクラスをコントローラーに自由に設定できます。もちろん、それが設定された後、私は継承を元に戻しました。

于 2015-03-16T16:20:12.567 に答える
0

MacOSXアプリのXcode7.1.1でも同じ問題が発生しました。私は他の答えからのすべての提案を試しました–成功しませんでした。

最後に、View Controllerファイルを削除して、新しいファイルを作成しました。
それからそれは突然働きました...

于 2016-02-05T15:02:06.353 に答える
0

他の人が解決しなかったので、私の問題を解決するのに役立つ別の可能な解決策を追加するだけです。

Command + Shift + Oを使用してカスタムViewControllerファイルを検索していることに気付きましたが、ファイルがどのフォルダーにあるかがわからなかったため、何らかの理由でカスタムクラスがプロジェクトに含まれていないことに気付きました。まだ検索で見つかりました。

私がしなければならなかったのは、ファイルをプロジェクトとVoilaに再度移動することだけでした。

これが将来誰かを助けることができることを願っています。

于 2016-03-07T08:07:54.057 に答える