我的应用已嵌入TabBarController
,我正在尝试从ViewController
切换所选标签。
通过以下几行,我希望找出该功能是否有效,不幸的是它没有,但我不确定为什么,任何人都可以帮助我出错的地方?
func tabbar() { self.tabBarController?.selectedIndex = 4 }
override func viewDidLoad() {
super.viewDidLoad()
tabbar()
}
PS:我测试这个的原因是因为我想知道以下内容是否适用于我的3DTouchShortcuts
。我知道3D触摸快捷键出现并打开初始视图控制器,我希望每个案例的以下行实际上会使快捷方式打开到不同的选项卡。
tababarController.selectedIndex = 1
private func handleShortcutItem(shortcutItem: UIApplicationShortcutItem) {
if let rootViewController = window?.rootViewController, let shortcutItemType = ShortcutItemType(shortcutItem: shortcutItem) {
let tabbarController = rootViewController as! UITabBarController
switch shortcutItemType {
case .AddItem:
NSNotificationCenter.defaultCenter().postNotificationName("performsegueAddItem", object: nil)
tabbarController.selectedIndex = 1
break
case .FavouritesTab:
tabbarController.selectedIndex = 2
break
}
}
}
答案 0 :(得分:3)
您只需在viewDidLayoutSubviews
内而不是viewDidLoad
内拨打电话,并在调用时使用tabBarController
。您还应该使用guard
来打开它:
override func viewDidLayoutSubviews() {
guard let tabBarController = tabBarController else { return }
tabBarController.selectedIndex = 0
}
答案 1 :(得分:0)
更容易
def shuffle():
randomlength = randint(8, 12)
pre = {0: '', 1:'',2:'',3:''}
lists = {0: Upperletters, 1: Lowerletters, 2: Symbols, 3: Numbers}
for x in range(4): pre[x]+=(choice(lists[x]))
for i in range(randomlength-4):
x = randint(1, 74)
if x < 27: pre[0]+=choice(lists[0])
elif x < 53: pre[1]+=choice(lists[1])
elif x < 65: pre[2]+=choice(lists[2])
else: pre[3]+=choice(lists[3])
pw = ''
for v in pre.values():
pw += v
return pw
print(shuffle())