故事板& 'NSInternalInconsistencyException',原因:'无法在bundle中加载NIB:'NSBundle

时间:2012-10-16 02:04:22

标签: iphone storyboard ios6 nib

我甚至不确定我是否正确行事,但这是我正在尝试做的事情。我有一个故事板,其中包括一个表格视图 - 以编程方式填充 - 所有这些都有效。我在故事板中还有另一个ViewController,它实际上将显示表视图中所选内容的详细信息。故事板中的表视图和详细视图之间没有间隔 - 应该有吗? - 我创建了一个类来处理这个细节视图。

所以我在detailViewController.h

中有这个
#import <UIKit/UIKit.h>

@class Profile;

@interface MedStaffDetailViewController : UIViewController

@property (weak, nonatomic) IBOutlet UIImageView *profileImage;

@property (weak, nonatomic) IBOutlet UIBarButtonItem *profileMobile;

@property (weak, nonatomic) IBOutlet UIBarButtonItem *profilePhone;

@property (weak, nonatomic) IBOutlet UIBarButtonItem *profileEmail;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil detail:(Profile *)profile title:(NSString *)title;


@end

这就是它的实施:

#import "MedStaffDetailViewController.h"
#import "MedStaffViewController.h"
#import "Profile.h"

@interface MedStaffDetailViewController ()

@end

@implementation MedStaffDetailViewController
@synthesize profileEmail, profileImage, profileMobile, profilePhone;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil detail:(Profile *)profile title:(NSString *)title
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
        self.title = title;

    }
    return self;
}
@end

我只是想在表视图中处理行的选择,以显示具有相应数据的详细视图 - 当我只是在做一个主/视图类型的应用程序时,我有这个工作 - 但现在我正在使用故事板,所以我可以学习。

我已在详细视图的身份检查器中将类设置为MedStaffDetailViewController,并在表视图控制器中具有以下内容:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Navigation logic may go here. Create and push another view controller.
    /*
     <#DetailViewController#> *detailViewController = [[<#DetailViewController#> alloc] initWithNibName:@"<#Nib name#>" bundle:nil];
     // ...
     // Pass the selected object to the new view controller.
     [self.navigationController pushViewController:detailViewController animated:YES];
     */

    _showProfile = [_profileArray objectAtIndex:indexPath.row];
    NSLog(@"Selected: %@", [_showProfile lastName]);

    self.detailViewController = [[MedStaffDetailViewController alloc] initWithNibName:@"MedStaffDetailViewController" bundle:nil detail:_showProfile title:@"This is the title"];

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


}

所有这些构建都很好,但在运行时会在此问题的标题中抛出错误。应该 - 或者我 - 需要在故事板中创建一个seque吗?如何在选择行时显示此详细信息视图。

1 个答案:

答案 0 :(得分:2)

你可以使用:

UIStoryboard*  sb = [UIStoryboard storyboardWithName:@"mystoryboard" bundle:nil];
UIViewController* vc = [sb instantiateViewControllerWithIdentifier:@"MedStaffDetailViewController"];