View Controller从其他视图控制器推送永不加载

时间:2017-08-15 04:11:40

标签: ios objective-c uiviewcontroller nib

在我基于标签的应用程序中,我有一个我在故事板中创建的UITableView视图控制器。当您在表格中的某个图片上滑动时,我希望当前的视图控制器(SecondViewController)加载一个xib文件(SpeciesViewController.xib)以便"采取应用程序"一个新的观点。到目前为止,didSelectRowAtIndexPath在刷卡时调用,但xib文件从未加载。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    SpeciesViewController* speciesController = [[[SpeciesViewController alloc]initWithNibName:@"SpeciesViewController" bundle:nil] autorelease];

   // SpeciesViewController* speciesController = [[SpeciesViewController alloc] init];
    Species *theSpecies = [fetchedResultsController objectAtIndexPath:indexPath];
    speciesController.theSpecies = theSpecies;

    switch (sortBySegmentedControl.selectedSegmentIndex) {
        case kSortByCommonNameFirst:
            speciesController.title = [theSpecies commonNameFirstLast];
            break;
        case kSortByCommonNameLast:
            speciesController.title = [theSpecies commonNameLastFirst];
            break;
        case kSortByScientificName:
            speciesController.title = [[NSString alloc] initWithFormat:@"%@%@",
                                       [theSpecies.scientificName substringToIndex:1],
                                       [[theSpecies.scientificName substringFromIndex:1] lowercaseString]];
            break;
        default:
            break;
    }

    speciesController.hidesBottomBarWhenPushed = YES;
    self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];

    //// Store current index path for viewDidAppear animation. ////
    self->currentSelectedIndexPath = indexPath;

    [self.navigationController pushViewController:speciesController animated:YES];

}

SpeciesViewController笔尖在属性检查器中有SpeciesViewController作为自定义类。出于这个原因,我希望在SpeciesViewController.m时调用ViewDidLoad或pushViewController:speciesController中的任何其他方法。

许多关于加载笔尖问题的帖子都与initWithNibName vs initWithCoder的错误有关。但是,我相信我正确使用initWithNibName因为我是从视图控制器这样做的。

我感谢任何帮助!非常感谢你!

1 个答案:

答案 0 :(得分:0)

我认为你不应该使用自动释放,如果笔尖名称正确,这应该有用

 SpeciesViewController* speciesController = [[SpeciesViewController alloc]initWithNibName:@"SpeciesViewController" bundle:nil] ;

而且我认为你应该首先将你的tableviewcontroller嵌入到NavigationController中,如果你还没有这样做,那么我猜self.navigationControlller目前是零。

您可以像这样呈现视图控制器

[self presentViewController:speciesController animated:YES completion:nil];

希望有所帮助