2

ストーリーボードは初めてで、カスタムの初期化に問題があります。

ストーリーボードを使用する前に、カスタム初期化を持つテーブルからビュー コントローラーをプッシュするためにこれを行っていました。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    //Creating Dummy Hotel
    HotelItem *hotel = [[HotelItem alloc] init];

    HotelDetailViewController *controller = [HotelDetailViewController controllerWithHotel:hotel];
    controller.hidesBottomBarWhenPushed = YES;
    [self.navigationController pushViewController:controller animated:YES];

    [hotel release];
}

ストーリーボードでは、次のようになった didSelectRowAtIndexPath の代わりに prepareForSegue を使用しています。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{

    //Creating Dummy Hotel
    HotelItem *hotel = [[HotelItem alloc] init];
    hotel.name = @"Hotelucho";

    // Make sure we're referring to the correct segue
    if ([[segue identifier] isEqualToString:@"ShowSelectedHotel"]) {

        HotelDetailViewController *controller = [segue destinationViewController];

    }
}

プライベート変数 "hotel" を変更して [segue destinationViewController] の直後にプロパティを設定できることはわかっていますが、カスタムの init メソッドを呼び出す方が便利だと思います。

これを達成する方法はありますか?

4

1 に答える 1

2

init の後に実行する必要がある大量のコードがある場合は、それ用に別のメソッドを作成し、そのメソッドをinitWithCoder:およびで呼び出すことができinitWithFrame:ます。

詳細については、この回答を確認してください: Objective C - カスタム ビューと init メソッドの実装?

于 2012-10-19T23:39:14.563 に答える