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];
}

现在有了故事板,我使用的是 prepareForSegue 而不是 didSelectRowAtIndexPath 变成了这样:

- (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

如果您在初始化后需要执行大量代码,则可能需要为其创建一个单独的方法,然后在initWithCoder:and中调用该方法initWithFrame:

Check this answer for more info: Objective C - Custom view and implementing init method?

于 2012-10-19T23:39:14.563 回答