Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.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 什么';标题有什么不同?_Ios_Swift_Uinavigationcontroller_Uinavigationbar_Uinavigationitem - Fatal编程技术网

Ios 什么';标题有什么不同?

Ios 什么';标题有什么不同?,ios,swift,uinavigationcontroller,uinavigationbar,uinavigationitem,Ios,Swift,Uinavigationcontroller,Uinavigationbar,Uinavigationitem,我想为我的UIViewController添加标题: 我试过了 self.navigationController.navigationItem.title self.navigationController.title self.title 有时,解决方案1可行,有时解决方案2可行,有时解决方案3可行 任何专家都能告诉我它们之间的区别吗?title是UIViewController的一个属性 表示此控制器管理的视图的本地化字符串。 将标题设置为描述视图的可读字符串。如果 视图控制器具有有效的

我想为我的UIViewController添加标题:

我试过了

self.navigationController.navigationItem.title
self.navigationController.title
self.title
有时,解决方案1可行,有时解决方案2可行,有时解决方案3可行


任何专家都能告诉我它们之间的区别吗?

title
UIViewController
的一个属性

表示此控制器管理的视图的本地化字符串。 将标题设置为描述视图的可读字符串。如果 视图控制器具有有效的导航项或选项卡栏项, 为该属性指定值将更新这些属性中的标题文本 对象


self.navigationController
是一个
UINavigationController
,它管理
viewController
所在的viewController堆栈
UINavigationController
UIViewController
的子类,因此
self.navigationController.title
UINavigationController
title


self.navigationItem.title

import UIKit

class ViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()

    self.title = "vc1's title"  
    }

}
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // self.title = "vc1's title"

        self.navigationController?.title = "vc1's nav title"

    }
}
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // self.title = "vc1's title"

        //self.navigationController?.title = "vc1's nav title"

        self.navigationItem.title = "vc1's navItem title"
    }
}
导航项目的标题显示在导航的中心 酒吧。默认值为零。当接收器处于导航位置时 项目堆栈,从顶部算起第二个,换句话说,是它的视图 控制器管理用户将导航回的视图 此属性中的值用于最顶部的“后退”按钮 导航栏。如果此属性的值为零,则系统使用 字符串“后退”作为后退按钮的文本



因此,实际上,您应该设置
ViewController
s的
title
。如果您的
ViewController
UINavigationController
管理,iOS会将此标题复制到导航项或选项卡栏项,并在导航栏上显示此标题。当您按下另一个
ViewController
时,iOS会将该文本用作后退按钮,如果您的
ViewController
uitabarcontroller
title
UIViewController
的属性,则它将显示在选项卡栏中

表示此控制器管理的视图的本地化字符串。 将标题设置为描述视图的可读字符串。如果 视图控制器具有有效的导航项或选项卡栏项, 为该属性指定值将更新这些属性中的标题文本 对象


self.navigationController
是一个
UINavigationController
,它管理
viewController
所在的viewController堆栈
UINavigationController
UIViewController
的子类,因此
self.navigationController.title
UINavigationController
title


self.navigationItem.title

import UIKit

class ViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()

    self.title = "vc1's title"  
    }

}
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // self.title = "vc1's title"

        self.navigationController?.title = "vc1's nav title"

    }
}
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // self.title = "vc1's title"

        //self.navigationController?.title = "vc1's nav title"

        self.navigationItem.title = "vc1's navItem title"
    }
}
导航项目的标题显示在导航的中心 酒吧。默认值为零。当接收器处于导航位置时 项目堆栈,从顶部算起第二个,换句话说,是它的视图 控制器管理用户将导航回的视图 此属性中的值用于最顶部的“后退”按钮 导航栏。如果此属性的值为零,则系统使用 字符串“后退”作为后退按钮的文本



因此,实际上,您应该设置
ViewController
s的
title
。如果您的
ViewController
UINavigationController
管理,iOS会将此标题复制到导航项或选项卡栏项,并在导航栏上显示此标题。当您按下另一个
ViewController
时,iOS会将该文本用作后退按钮,如果您的
ViewController
UITabBarController
管理,它将显示在选项卡栏中。我创建了一个演示来解释它们:

你看,我的
vc1
是黄灰色
颜色
嵌入
导航控制器
,我的
vc2
是浅绿色
颜色
也嵌入
导航控制器
,两个
导航控制器
都由
选项卡栏控制器
管理

ViewController.swift
(它是
vc1
),如果我设置
self.title

import UIKit

class ViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()

    self.title = "vc1's title"  
    }

}
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // self.title = "vc1's title"

        self.navigationController?.title = "vc1's nav title"

    }
}
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // self.title = "vc1's title"

        //self.navigationController?.title = "vc1's nav title"

        self.navigationItem.title = "vc1's navItem title"
    }
}
ViewController2.swift
(它是
vc2
):

结果是
选项卡栏标题
导航标题
全部设置:

如果我设置了self.navigationController?.title:

import UIKit

class ViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()

    self.title = "vc1's title"  
    }

}
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // self.title = "vc1's title"

        self.navigationController?.title = "vc1's nav title"

    }
}
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // self.title = "vc1's title"

        //self.navigationController?.title = "vc1's nav title"

        self.navigationItem.title = "vc1's navItem title"
    }
}
结果是设置了
选项卡栏标题

如果我设置了self.navigationItem.title:

import UIKit

class ViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()

    self.title = "vc1's title"  
    }

}
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // self.title = "vc1's title"

        self.navigationController?.title = "vc1's nav title"

    }
}
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // self.title = "vc1's title"

        //self.navigationController?.title = "vc1's nav title"

        self.navigationItem.title = "vc1's navItem title"
    }
}
结果是设置了
导航标题


我创建了一个演示来解释它们:

你看,我的
vc1
是黄灰色
颜色
嵌入
导航控制器
,我的
vc2
是浅绿色
颜色
也嵌入
导航控制器
,两个
导航控制器
都由
选项卡栏控制器
管理

ViewController.swift
(它是
vc1
),如果我设置
self.title

import UIKit

class ViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()

    self.title = "vc1's title"  
    }

}
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // self.title = "vc1's title"

        self.navigationController?.title = "vc1's nav title"

    }
}
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // self.title = "vc1's title"

        //self.navigationController?.title = "vc1's nav title"

        self.navigationItem.title = "vc1's navItem title"
    }
}
ViewController2.swift
(它是
vc2
):

结果是
选项卡栏标题
导航标题
全部设置:

如果我设置了self.navigationController?.title:

import UIKit

class ViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()

    self.title = "vc1's title"  
    }

}
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // self.title = "vc1's title"

        self.navigationController?.title = "vc1's nav title"

    }
}
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // self.title = "vc1's title"

        //self.navigationController?.title = "vc1's nav title"

        self.navigationItem.title = "vc1's navItem title"
    }
}
结果是设置了
选项卡栏标题

如果我设置了self.navigationItem.title:

import UIKit

class ViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()

    self.title = "vc1's title"  
    }

}
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // self.title = "vc1's title"

        self.navigationController?.title = "vc1's nav title"

    }
}
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // self.title = "vc1's title"

        //self.navigationController?.title = "vc1's nav title"

        self.navigationItem.title = "vc1's navItem title"
    }
}
结果是设置了
导航标题


你试过self.navigationController.navigationItem.title吗?我知道它可以作为你的演示,我想知道它的根本原因,然后我可以决定在我未来的开发中使用哪一个。你试过self.navigationController.navigationItem.title吗?我知道它可以作为你的演示,我想知道它的根本原因