使用Storyboard自定义视图控制器的初始化

时间:2012-10-19 20:26:21

标签: iphone uiviewcontroller storyboard uitableview

我是故事板的新手,我遇到了自定义初始化的问题。

在使用故事板之前,我曾经这样做以从具有自定义初始化的表推送视图控制器:

- (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方法更有用。

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:2)

如果您在init之后需要执行大量代码,则可能需要为其创建单独的方法,然后在initWithCoder:initWithFrame:中调用该方法。

查看此答案以获取更多信息: Objective C - Custom view and implementing init method?