web-dev-qa-db-ja.com

ストーリーボードからプロトタイプセルをどのようにロードしますか?

ストーリーボード内で定義されているIBOutlet接続とともに、プロトタイプセルをロードする方法はありますか?

更新

セル(その母体のUICollectionViewCell)を単体テストしたいので、UIViewControllerコンテキストの外部にロードしたいと思います。

事実上、ペン先からカスタムビューをロードできるのと同じ方法で、ファイルの所有者を指定し、IBOutletを設定します。

16
qnoid

編集:私が知る限り、ストーリーボードからプロトタイプUITableViewCellsを、作成したViewController以外の場所で使用することはできません。

私はまだユニットテストでこれを試していませんが、カスタムのUITableViewCellを別のペン先に簡単に入れることができます。

ビューコントローラで使用するには、セルを登録 tableViewsに登録する必要があります。

UINib *nib = [UINib nibWithNibName:@"ABCNameOfYourNibCell" bundle:nil];
[self.tableView registerNib:nib forCellReuseIdentifier:@"myCustomCell"];

次に、cellForRowAtIndexPath:でこのようなセルを使用します

static NSString *CellIdentifier = @"myCustomCell";

ABCNameOfYourNibCell *cell = 
[tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

あなたのテスト目的あなたは一緒に行くことができるはずです:

ABCNameOfYourNibCell *testCell = 
[[ABCNameOfYourNibCell alloc] initWithStyle: UITableViewCellStyleDefault reuseIdentifier:nil];

再利用動作をテストする必要がある場合は、ここでreuseIdentifierを設定し、セルでprepareForReuseを呼び出す必要があります。

12
flo

通常、UITableViewControllerまたはUITableViewを作成します。 UITableViewCellクラスも作成する必要があります。 UITableViewCellクラスを作成した後、「UIStoryboard」に移動し、セルを選択します。

enter image description here

次に、Identity Inspector内にUITableViewCellクラスを設定します。

enter image description here

次に、要素をUITableViewCellに追加し、それらをクラスに接続します

enter image description here

次に、Attributes Inspector内にCellIdentifierを追加します。

enter image description here

UITableViewControllerメソッドがあるUIViewControllerまたはUITableViewDelegateに到達せず、次のようにセルを呼び出します(UITableViewCellの先頭にあるViewControllerクラスを#importすることを忘れないでください:

- (UITableViewCell *)tableView:(UITableView *)tableView 
         cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"MyIdentifier";
    MyCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier 
                                                   forIndexPath:indexPath];

    [cell.label setText:[NSString stringWithFormat:@"My Cell at Row %ld", 
                         (long)indexPath.row]];      
    return cell;
}
11
Alex Cio