gpt4 book ai didi

ios - 如何使用 NIB 文件推送 UIViewController

转载 作者:可可西里 更新时间:2023-11-01 05:03:22 24 4
gpt4 key购买 nike

我是 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];
}

这是用于以编程方式显示 UILabel 的 UIViewController 的 .m。

@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,不使用 Storyboard)

最佳答案

从 xib 加载 UIViewController 很容易。当您的 tableview 委托(delegate)发送 didSelectRowAtIndexPath: 消息时,您可以加载 xib 并显示 View Controller ,如下所示:

BIDDisclosureDetailViewController *controller = [[BIDDisclosureDetailViewController alloc] initWithNibName:@"BIDDisclosureDetailView" bundle:nil];

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

一些注意事项:

  1. 您不从 xib 加载 View Controller ,只加载 View 。这就是为什么在上面的代码中我使用 initWithNibName:bundle:
  2. 创建了一个新的 View Controller 实例
  3. 为了在 IB 中正确连接所有这些,您将 xib 中的“文件所有者”设置为正确的 View Controller 类型 (BIDDisclosureDetailViewController)。
  4. 确保也删除其中的 loadView 代码,它会在尝试使用 xib 时造成困惑。

旁注!你不应该像这样在方法签名的末尾使用分号:

- (void)viewWillAppear:(BOOL)animated;

它被认为是错误的形式。

希望这对您有所帮助!

关于ios - 如何使用 NIB 文件推送 UIViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15937079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com