在创建应用程序时,如何解析“静态表视图仅在嵌入UITableViewController实例时有效”?

时间:2015-03-06 23:04:55

标签: ios objective-c xcode uitableview

我是Objective-C初学者,我正在阅读教程,使用Apple开发人员文章创建一个IOS应用程序。

https://developer.apple.com/library/ios/referencelibrary/GettingStarted/RoadMapiOS/SecondTutorial.html#//apple_ref/doc/uid/TP40011343-CH8-SW1

我创造了一个放松的segue,我已经卡住了。我已经浏览过如下所示的帖子

  1. StoryBoard issue in Xcode 6.1
  2. Change a UIViewController to a UITableViewController inside a storyboard?
  3. Want to create a cool static UI but : "Static table views are only valid..."
  4. 我尝试修改故事板源以使用“tableViewController”而不是“viewController”,但故事板不会打开。

    我确信有一个简单的解决方案,但我不知道足够的Objective-C或IOS开发知道它是什么,或者如何实现它。

    我让我的控制器实现UITableViewController,我的视图为UITableView。我已附上以下截图。

    XCode Storyboard setup

    和错误消息:

    Error message and description

    ToDoListTableViewController.h的来源如下:

     #import <UIKit/UIKit.h>
    
    @interface ToDoListTableViewController : UITableViewController
    
    - (IBAction)unwindToList:(UIStoryboardSegue *)segue;
    
    @end
    

    和实施

    #import "ToDoListTableViewController.h"
    
    @interface ToDoListTableViewController ()
    
    @end
    
    @implementation ToDoListTableViewController
    
     . . . Other methods 
    
    - (IBAction)unwindToList:(UIStoryboardSegue *)segue {
    }
    @end
    

1 个答案:

答案 0 :(得分:5)

你的照片有点小,所以我们有点难以分辨我们在看什么。另外你的描述有点模糊。

这笔交易是为了将表视图设置为静态表视图,它必须由UITableViewController管理,而不是常规的UIViewController。

UITableViewController是UIViewController的特殊子类。当您向故事板添加新场景时,您将转到UI对象列表,找到UITableViewController,然后将其拖到故事板上。

关于UITableViewController对象的一个​​恼人的事情是他们管理的唯一事情是表视图。您无法使用它们来设置标签,按钮和其他UI元素。只是一个表视图,没有别的。

你说:

&#39;我尝试修改故事板源以使用&#34; tableViewController&#34;而不是&#34; viewController&#34; ...&#39;

我不知道这意味着什么。什么是故事板来源&#34;?您没有&#34;修改故事板来源&#34;,您将UITableViewController拖到故事板上。

然后你说&#34; ...但故事板不会打开。&#34;我也不知道 的含义。你将不得不解释这一点。

幸运的是,有一个简单的解决方案。

你想要做的是创建一个常规的UIViewController来管理除了表视图之外的所有东西,然后放一个&#34;容器视图&#34;在那个视图控制器中并设置一个&#34;嵌入segue&#34;在该容器视图中安装UITableViewController。

以下是您的表现方式:

在右侧的UI元素列表中搜索&#34; container&#34;。将容器视图拖动到您希望显示表视图的视图控制器上。然后将UITableViewController拖到故事板上的空白区域以创建新的故事板场景。然后从第一个视图控制器中的容器视图控制拖动到UITableViewController。这将创建一个嵌入segue,它会将UITableViewController作为子视图控制器加载,其视图在其内部并且大小适合容器视图。

现在,您可以拥有一个窗口,其中包含由UITableViewController管理的表视图和其他内容。

有更多细节可以设置,超出SO帖子的范围。我建议你在容器视图上进行谷歌搜索并嵌入segues,并尝试找到有关设置它们的教程。