Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iOS 9中,如果对页面使用UIViewController以外的类,如何创建约束以避免碰撞状态栏和/或选项卡栏?_Ios_Ios9_Statusbar - Fatal编程技术网

在iOS 9中,如果对页面使用UIViewController以外的类,如何创建约束以避免碰撞状态栏和/或选项卡栏?

在iOS 9中,如果对页面使用UIViewController以外的类,如何创建约束以避免碰撞状态栏和/或选项卡栏?,ios,ios9,statusbar,Ios,Ios9,Statusbar,所有指南都建议调整顶部布局指南,以避免重击状态栏。但是,如果使用UIViewController以外的视图控制器创建页面(例如,如果使用UITableViewController创建页面,因为页面主要是表视图),则该页面没有布局指南。我怎么才能避免状态栏呢?我发现UITableViewController麻烦太多了,就像这个家伙: 现在,当我实现一个表视图时,我发现将表视图作为UIViewController的属性更容易,然后将委托和数据源职责设置为UIViewController。从那里你可以

所有指南都建议调整顶部布局指南,以避免重击状态栏。但是,如果使用UIViewController以外的视图控制器创建页面(例如,如果使用UITableViewController创建页面,因为页面主要是表视图),则该页面没有布局指南。我怎么才能避免状态栏呢?

我发现UITableViewController麻烦太多了,就像这个家伙:

现在,当我实现一个表视图时,我发现将表视图作为UIViewController的属性更容易,然后将委托和数据源职责设置为UIViewController。从那里你可以定制你想要的任何东西。您可以使用故事板选项,如状态栏设置(推断、无、黑色等),但根据我的经验,我发现将UITableView放在UIViewController中效果最好

示例标题:

@interface MyViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>

@property (weak, nonatomic) IBOutlet UITableView *myTableView;

另一个没有导航控制器和状态栏问题的UITableViewController示例:

一个
UITableViewController
(和所有其他标准视图控制器)继承自
UIViewController
,因此它们具有
UIViewController
的所有属性和方法,包括顶部和底部布局参考线,您完全可以使用。

由于UITableViewController继承自UIViewController,因此在Tableviewcontroller中,您可以覆盖此方法

- (UIStatusBarStyle)preferredStatusBarStyle {
    if(<#condition>)
    {
        return UIStatusBarStyleLightContent;
    }
    else
    {
        return UIStatusBarStyleDefault;
    }
}
-(UIStatusBarStyle)首选状态BarStyle{
if()
{
返回UIStatusBarStyleLightContent;
}
其他的
{
返回UIStatusBarStyleDefault;
}
}

如果必须使用UITableViewController,可以将其嵌入带有嵌入序列的UIViewController中,并在UIViewController中执行任何操作

状态栏发生了什么变化?如果视图与它重叠,那么它“被撞倒”是什么意思?您可以将UITableViewController嵌入UINavigationController中。请参阅此部分,如何使UITableViewController的顶部和底部布局指南显示在XCode界面设计器中?据我所知,在Interface Builder中,不能向表视图控制器添加任何视图,这些视图不是表视图页眉或页脚、单元格或单元格内容视图的子视图,因此,为这些内容的顶部布局指南添加约束没有多大意义。如果您对状态栏下的表视图的内容有问题,它并不真的喜欢不嵌入导航控制器…谢谢。令人恼火的是,Interface Builder允许您设置不受支持且不会警告您的组合。
@synthesize myTableView;
//**** Table View Delegate and Data Source ****//

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *myCellIdentifier = @"myCell";
    MyTableViewCell *cell = (MyTableViewCell *)[myTableView dequeueReusableCellWithIdentifier:myCellIdentifier];
    //Customize the cell
    return cell;
}

-(NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section
{
    return [myDataSource count];
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    //perform some action on click
}