ios 如何在界面生成器中向UITableViewController添加导航栏?

xcitsw88  于 2022-12-30  发布在  iOS
关注(0)|答案(8)|浏览(208)

界面构建器不让我点击并拖动导航栏到表视图控制器上!!!这超级令人沮丧。
所有我想要的是一个带有编辑按钮的表格视图(在界面生成器中完成)。如果这是不可能的,那么我如何添加一个导航栏编程?

yhived7q

yhived7q1#

在大纲视图中,确保选择了Table View Controller
然后进入Editor菜单,点击Embed In子菜单,选择Navigation Controller,这样导航控制器就指向了带有内置关系的tableview控制器。

2izufjch

2izufjch2#

对于顶部带有编辑按钮的表格视图,使用UINavigationController,并将UITableView作为rootView。这意味着您将为表格视图创建一个自定义UITableView子类,并将其用作UINavigationController示例的rootView。(在编程中,它是用UINavigationController的-(id)initWithRootViewController设置的。它也可以通过IB设置。)
然后,在UITableView子类中,取消注解以下行:

- (void)viewDidLoad {
    [super viewDidLoad];
    // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
    self.navigationItem.rightBarButtonItem = self.editButtonItem;
}

瞧,UINavigationController的视图显示为一个表格视图,在导航栏的右侧有一个编辑按钮。
由于控制器位于堆栈的顶部,因此左侧没有“back”按钮,因此您可以对创建的任何UIBarButtonItem使用self.navigationItem.leftBarButtonItem

6mzjoqzu

6mzjoqzu3#

我同意在界面生成器中很难弄清楚如何做这样的事情,但幸运的是,可以通过这种方式向表格视图添加导航栏和栏按钮项。
1.从库中拖动一个空白视图(UIView的示例)到表视图顶部附近的区域。当您拖动到目标区域附近时,Interface Builder将以蓝色突出显示该视图,以显示放置该视图的位置。松开鼠标,该视图将作为表视图标题视图的子视图添加。
1.将导航栏从库中拖放到刚添加的空白视图上。
1.将一个栏按钮项从库中拖放到导航栏上。

    • 编辑**

正如Bogatyr所指出的,上述方法的问题在于,导航栏将随着表格视图一起滚动。Apple建议使用UIViewController的自定义子类,该子类同时拥有导航栏和调整大小以适应的UITableView示例。不幸的是,这意味着您必须自己实现UIViewController子类所需的UITableViewController行为。
另一个看起来很有效的方法是创建一个UIViewController的自定义子类,它拥有一个包含导航栏的空白背景视图以及一个适合导航栏的空白内容视图(UIView的示例)。您的自定义子类将有一个指向同一nib文件中UITableViewController示例的出口。
这样做的好处是允许所有视图组件都在Interface Builder中创建和配置,并且不需要从头开始实现UITableViewController方法。在Table View Controller的父视图中需要注意的唯一细节是将Table View添加为viewDidLoad中父视图内容视图的子视图。
父对象可以实现导航栏按钮项的操作方法,并在必要时实现委托模式。

ccrfmcuu

ccrfmcuu4#

从iOS6开始,你可以使用容器视图。所以你要做的就是使用视图控制器,添加导航栏,然后添加一个容器视图到相同的视图控制器。它会自动添加新的视图控制器链接到你的容器视图。现在只需删除它,和你的表格视图控制器在故事板。现在嵌入表格视图控制器到容器视图通过控制拖动。希望它有帮助。

6kkfgxo0

6kkfgxo05#

首先添加一个导航控制器,并将表视图控制器(作为根视图控制器)放到导航控制器上。这是在代码中完成的,因为我不使用IB。

oipij1gg

oipij1gg6#

为什么你不能把navigationItem拖到一个.xib文件中,文件的所有者设置为UIViewController的子类,并把navigationItem挂接到UIViewController的navigationItem出口上,这让我很费解。这似乎是IB / XCode集成中的一个真实的的漏洞。因为你当然可以把ViewController的一个示例拖到一个xib文件中,并把navigationItem拖到ViewController中,然后以此方式设置标题和barbuttonitem。
因此,如果要在IB中定义UITableViewController子类对象的导航栏,必须在xib文件中创建TableVC对象(但不是包含UITableViewController的表视图的.xib文件!)然后,您可以将TableVC对象挂接为另一个对象的出口(就像应用委托),如果您在应用的整个生命周期中只需要一个TVC示例,它就可以工作,或者,如果您希望在代码中动态创建TableVC的示例,则可以通过NSBundle类的loadNibNamed:owner:options方法手动加载这个额外的.xib文件。

kyks70gy

kyks70gy7#

这些步骤在iOS 9中对我很有效:
1.向情节提要添加视图控制器。使UITableViewController成为基类。
1.在视图控制器顶部添加一个导航栏对象。
1.在导航栏下方添加表视图。
1.将表格视图单元格添加到表格视图中。
1.添加约束。

ycggw6v2

ycggw6v28#

这是另一条简单的路
1.在情节提要上选择TableViewController屏幕。
1.单击右侧菜单上的尺寸检查器符号,然后找到模拟尺寸
1.将固定格式更改为自由格式
您可以轻松添加导航栏。

相关问题