我甚至不确定我是否正确行事,但这是我正在尝试做的事情。我有一个故事板,其中包括一个表格视图 - 以编程方式填充 - 所有这些都有效。我在故事板中还有另一个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吗?如何在选择行时显示此详细信息视图。
答案 0 :(得分:2)
你可以使用:
UIStoryboard* sb = [UIStoryboard storyboardWithName:@"mystoryboard" bundle:nil];
UIViewController* vc = [sb instantiateViewControllerWithIdentifier:@"MedStaffDetailViewController"];