NavigationController 对应的 顶部状态栏 在 嵌入 TabBarController 后不显示

chilli6519 2014-09-21 08:17:20
首先定义了一个 NavigationController 关联对应的 view


复制代码
let mydialy:UITableViewController = MyDialyController();
let navdialy = UINavigationController(rootViewController: mydialy);
let imgdialy = UIImage(named: "apptoday1.png");
mydialy.tabBarItem = UITabBarItem(title: "今日", image: imgdialy, tag:1)




然后定义一个 ,并将 NavigationController 加入

复制代码
let navarr = [mydialy];
let mytabbar = UITabBarController();
mytabbar.viewControllers = navarr;
self.window?.rootViewController = mytabbar;




执行代码后, 顶部状态栏没有了




希望得到的结果
...全文
437 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Bannings 2014-09-21
  • 打赏
  • 举报
回复
引用 9 楼 chilli6519 的回复:
[quote=引用 6 楼 zhangao0086 的回复:] 没差别,我是懒得在signle application里手动创建Nav。 你要是方便的话,把你的工程打个包发到CSDN上或者百度盘里。
百度盘 : http://pan.baidu.com/s/1pJ0U1gJ[/quote] 你这样做的话等于是纯手工写的,Storyboard都没有派上用场,只能在VC里自己创建一个SegmentedControl,然后设置到titleView上: self.navigationItem.titleView = xxx
chilli6519 2014-09-21
  • 打赏
  • 举报
回复
引用 6 楼 zhangao0086 的回复:
没差别,我是懒得在signle application里手动创建Nav。 你要是方便的话,把你的工程打个包发到CSDN上或者百度盘里。
百度盘 : http://pan.baidu.com/s/1pJ0U1gJ
Bannings 2014-09-21
  • 打赏
  • 举报
回复
引用 7 楼 chilli6519 的回复:
[quote=引用 3 楼 zhangao0086 的回复:] 我刚试着创建了一个新的Master-Detail工程,直接往Storyboard上添加一个SegmentedControl是可以的,如果添加成功的话,在viewDidLoad里设置title应该是无效的,你确认下添加SegmentedControl的VC是不是你上面发的那个VC
肯定确认这个, 程序设置的不是 放了 SegmentedControl 的那个 vc [/quote] 我是用 single APP 创建的 工程, 其中的tab bar 是代码创建的, 就像问题开始的时候一样[/quote] 你Storyboard中的TableVC的File Owner是不是MyDialyController?如果不是的话,相当于你代码创建的是一个新的TableVC,和Storyboard里的TableVC没有任何关系
chilli6519 2014-09-21
  • 打赏
  • 举报
回复
引用 3 楼 zhangao0086 的回复:
我刚试着创建了一个新的Master-Detail工程,直接往Storyboard上添加一个SegmentedControl是可以的,如果添加成功的话,在viewDidLoad里设置title应该是无效的,你确认下添加SegmentedControl的VC是不是你上面发的那个VC
肯定确认这个, 程序设置的不是 放了 SegmentedControl 的那个 vc [/quote] 我是用 single APP 创建的 工程, 其中的tab bar 是代码创建的, 就像问题开始的时候一样
Bannings 2014-09-21
  • 打赏
  • 举报
回复
没差别,我是懒得在signle application里手动创建Nav。 你要是方便的话,把你的工程打个包发到CSDN上或者百度盘里。
chilli6519 2014-09-21
  • 打赏
  • 举报
回复
我创建的是single application , 你你创建的 Master-Detail 工程有差别 ?
chilli6519 2014-09-21
  • 打赏
  • 举报
回复
引用 3 楼 zhangao0086 的回复:
[quote=引用 2 楼 chilli6519 的回复:] [quote=引用 1 楼 zhangao0086 的回复:] 你的 let navarr = [mydialy];这个数组,应该是NavigationController数组,但是现在是ViewController数组,等于NavigationController没有发生作用,改成这样: let navarr = [navdialy];
谢谢,换了你的建议,顶部状态栏确实出来了,但在storyboard上设计的文字和放置的按钮确没有了 这是storyboard上的截图 这是运行后显示的截图 但如果在 viewDidLoad 中设置 title可以显示, 那些按钮怎么办? 都只能代码创建?

    override func viewDidLoad() {
        
        super.viewDidLoad();
        
        self.view.backgroundColor = UIColor.blueColor();
        
        self.title = "这个是view的界面";
    }
谢谢[/quote] 我刚试着创建了一个新的Master-Detail工程,直接往Storyboard上添加一个SegmentedControl是可以的,如果添加成功的话,在viewDidLoad里设置title应该是无效的,你确认下添加SegmentedControl的VC是不是你上面发的那个VC[/quote] 肯定确认这个, 程序设置的不是 放了 SegmentedControl 的那个 vc
Bannings 2014-09-21
  • 打赏
  • 举报
回复
引用 2 楼 chilli6519 的回复:
[quote=引用 1 楼 zhangao0086 的回复:] 你的 let navarr = [mydialy];这个数组,应该是NavigationController数组,但是现在是ViewController数组,等于NavigationController没有发生作用,改成这样: let navarr = [navdialy];
谢谢,换了你的建议,顶部状态栏确实出来了,但在storyboard上设计的文字和放置的按钮确没有了 这是storyboard上的截图 这是运行后显示的截图 但如果在 viewDidLoad 中设置 title可以显示, 那些按钮怎么办? 都只能代码创建?

    override func viewDidLoad() {
        
        super.viewDidLoad();
        
        self.view.backgroundColor = UIColor.blueColor();
        
        self.title = "这个是view的界面";
    }
谢谢[/quote] 我刚试着创建了一个新的Master-Detail工程,直接往Storyboard上添加一个SegmentedControl是可以的,如果添加成功的话,在viewDidLoad里设置title应该是无效的,你确认下添加SegmentedControl的VC是不是你上面发的那个VC
chilli6519 2014-09-21
  • 打赏
  • 举报
回复
引用 1 楼 zhangao0086 的回复:
你的 let navarr = [mydialy];这个数组,应该是NavigationController数组,但是现在是ViewController数组,等于NavigationController没有发生作用,改成这样:
let navarr = [navdialy];


谢谢,换了你的建议,顶部状态栏确实出来了,但在storyboard上设计的文字和放置的按钮确没有了

这是storyboard上的截图


这是运行后显示的截图



但如果在 viewDidLoad 中设置 title可以显示, 那些按钮怎么办? 都只能代码创建?


override func viewDidLoad() {

super.viewDidLoad();

self.view.backgroundColor = UIColor.blueColor();

self.title = "这个是view的界面";
}


谢谢
Bannings 2014-09-21
  • 打赏
  • 举报
回复
你的 let navarr = [mydialy];这个数组,应该是NavigationController数组,但是现在是ViewController数组,等于NavigationController没有发生作用,改成这样: let navarr = [navdialy];
Bannings 2014-09-21
  • 打赏
  • 举报
回复
我在你的代码基础上做了这些事: 1. 把AppDelegate里的window方法注释掉了,由Storyboard来启动window 2.你的Storyboard里虽然有TabBarController,但它还不是window的rootViewController:选中TabBarController,在右边的Attribute Inspector中,把is initial view controller勾起来,这样一来,Storyboard在自动构建window的时候,就会把它当作rootViewController了 3.我直接在Storyboard里拖了个SegmentedController到你的TableVC的titleView上,运行后可以看到。另外,你的TableVC的File Owner设置是正确的,所以viewDidLoad方法可以执行到。 4.我看到你的NavController上还有一个Toolbar,我把它删掉了,因为它没什么用。把它删掉后,下面就出现了当它在一个TabBarController里时会显示的东西,我把它的title改为了“今日” 5.我又拖了一个NavController到Storyboard上,然后把TabBarController的viewControllers连向它(viewControllers可以连向多个VC),并把NavControlelr下面的tabBarItem的title改为“ZUORI”。 就做了这些事件,你看下
chilli6519 2014-09-21
  • 打赏
  • 举报
回复
而且我不是把 storyboard 和 对应的 VC 文件关联了吗 ? 该如何修改 , 确实搞不懂了。 请帮助指正
chilli6519 2014-09-21
  • 打赏
  • 举报
回复
引用 10 楼 zhangao0086 的回复:
[quote=引用 9 楼 chilli6519 的回复:] [quote=引用 6 楼 zhangao0086 的回复:] 没差别,我是懒得在signle application里手动创建Nav。 你要是方便的话,把你的工程打个包发到CSDN上或者百度盘里。
百度盘 : http://pan.baidu.com/s/1pJ0U1gJ[/quote] 你这样做的话等于是纯手工写的,Storyboard都没有派上用场,只能在VC里自己创建一个SegmentedControl,然后设置到titleView上: self.navigationItem.titleView = xxx[/quote] 是啊,刚开始接触swift, 还不会用, 那怎么样才能和 storyboard 使用上呢, 有些不想通过纯代码实现 界面部分用拖拽还是方便一些 。 就在我那个例子上该怎么修改呢 ? 我邮箱: pub123@126.com 谢谢

1,420

社区成员

发帖
与我相关
我的任务
社区描述
Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Objective-C共同运行于MAC OS和iOS平台,用于搭建基于苹果平台的应用程序。
swift 技术论坛(原bbs)
社区管理员
  • Swift
  • 网罗开发
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧