【问题标题】:Navigation based application table view frame基于导航的应用程序表视图框架
【发布时间】:2024-01-06 11:09:01
【问题描述】:

我在 xcode 中使用了基于导航的应用程序模板,此模板的默认设置是将表格视图设置为填充屏幕,但是我希望表格视图填充屏幕较小的框架。

这是它最初工作的代码,但是如果从表格中选择一行并且用户在按下回时转到下一个屏幕,表格视图会填充屏幕而不是框架。

    - (void)viewDidAppear:(BOOL)animated {

    // set the frame size
    CGRect frame = self.tableView.frame;
    frame = CGRectMake(16.0, 36.0, 254.0, 350.0);
    self.tableView.frame = frame;

    [super viewDidAppear:animated];
    }

任何帮助将不胜感激,谢谢。

【问题讨论】:

  • 您的控制器类型是什么?如果它是 uitableviewcontroller,那么它将系统地调整大小,它必须是一个普通的 uiviewcontroller。对于这种类型的小桌子,我通常在背景上使用一个简单的 uiview,然后在里面放一个 uitbaleview。
  • 嗨,谢谢,是的,它是一个 uitableviewcontroller,我该怎么做呢?

标签: uitableview navigation frame


【解决方案1】:

将类名改为 UIViewController 并添加一个 IBOutlet

@interface mycontroller : UIViewController <UITableViewDelegate, UITableViewDataSource> {
    IBOutlet UITableView* tableView;
    ....
}

在 IB 中删除表,创建一个链接到控制器视图出口的 UIView。然后创建一个表格视图,作为视图的子视图放置。这个将保持其大小。将其出口设置为 tableView,将您的控制器设置为委托和数据源。然后,您只需实现与当前控制器中相同的表视图方法(numberOfSections...、numberOfRows...、cellForRow...)。

【讨论】:

  • 我试图为二级视图控制器做同样的事情,所以我将类名更改为 UIViewController 而不是 UITableViewController 并添加了一个 IBOutlet,但是我没有二级视图的 xib 文件控制器所以我有点卡住了。我已经尝试创建一个新的 xib 添加了一个视图控制器并选择了视图控制器的类并添加了表视图并链接了插座,但我不确定 File's Owner 类是什么,因为它只是说 NSObject 并且是与任何事物无关。所以当我运行应用程序时它崩溃了。有什么想法吗?
  • 在 IB 中,您可以设置/更改文件的所有者类:选择文件的所有者,打开身份检查器 (alt-cmd-3),出现右侧窗格并输入您的类名。
  • 好的,我做到了,现在在我的对象列表中,我有一个视图控制器 > 视图 > 表视图,这是我需要的吗?另外我应该为视图控制器选择什么类,我应该链接我的表视图数据源并委托给视图控制器或文件所有者,这是我感到困惑的部分。
  • 在创建这样的新控制器时,您不需要将其放入 IB 中。尝试使用文件模板库创建一个/添加 uiviewcontroller 子类,它将带有正确的 IB 结构 - 控制器是文件所有者,IB 窗格中没有其他控制器,只有视图和子视图。现在错误消息完全不同了,它说您在 CategoryOneController 上调用 initWithStyle 并且此方法不存在。我还希望在屏幕截图上看到 2 个 xib,正如您提到的 2 个表格视图,我希望没问题。
  • mediafire.com/?80b2ka1bacypn74 这是该应用程序的副本,如果您不介意看一下,我将不胜感激。我已经设法将第一个表格视图放入框架中,现在我正在尝试将第二个表格视图也放入框架中。
最近更新 更多