[英]How to Push an UIViewController with NIB file
我是iOS開發的新手,我很頭疼,不理解可能很容易的東西。 基本上我正在使用UITableViewController轉到另一個UITableViewController,但后來我需要從第二個UITableViewController轉到UIViewController。 我希望這個UIViewController有一個.xib文件供我快速創建UI,但我似乎無法找到從第二個UITableViewController推送到這個UIViewController的方法。 我設法以編程方式顯示標簽,但不是來自.xib的UI。
這是與程序標簽一起使用的代碼:
- (void)tableView:(UITableView *)tableView
accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath
{
self.detailController.title = @"Disclosure Button Pressed";
NSString *selectedMovie = self.movies[indexPath.row];
NSString *detailMessage = [[NSString alloc]
initWithFormat:@"This is details for %@.",
selectedMovie];
self.detailController.message = detailMessage;
self.detailController.title = selectedMovie;
[self.navigationController pushViewController:self.detailController
animated:YES];
}
這是UIViewController的.m,它以編程方式顯示UILabel。
@implementation BIDDisclosureDetailViewController
- (UILabel *)label;
{
return (id)self.view;
}
- (void)loadView;
{
UILabel *label = [[UILabel alloc] init];
label.numberOfLines = 0;
label.textAlignment = NSTextAlignmentCenter;
self.view = label;
}
- (void)viewWillAppear:(BOOL)animated;
{
[super viewWillAppear:animated];
self.label.text = self.message;
}
@end
基本上我不想以編程方式創建任何UIObject,我需要一個.xib來創建UI。
謝謝
(iOS 6,不使用故事板)
從xib加載UIViewController
很容易。 當您的tableview委托發送didSelectRowAtIndexPath:
消息時,您可以加載xib並顯示視圖控制器,如下所示:
BIDDisclosureDetailViewController *controller = [[BIDDisclosureDetailViewController alloc] initWithNibName:@"BIDDisclosureDetailView" bundle:nil];
[self.navigationController pushViewController:controller animated:YES];
有些事情需要注意:
initWithNibName:bundle:
創建一個新的視圖控制器實例initWithNibName:bundle:
loadView
代碼,它會在嘗試使用xib時搞砸。 邊注! 你不應該在這樣的方法簽名的末尾有分號:
- (void)viewWillAppear:(BOOL)animated;
它被認為是糟糕的形式。
希望這可以幫助!
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
ViewControllerToBePushed *viewController = [[ViewControllerToBePushed alloc] initWithNibName:@"ViewControllerToBePushed" bundle:nil];
[self.navigationController pushViewController:viewController animated:YES];
}
使用上述方法在選擇特定行時按下以查看控制器
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.