簡體   English   中英

setRightBarButtonItems不起作用

[英]setRightBarButtonItems doesn't work

我想在UINavigationBar的右邊有兩個按鈕。 以下是源代碼。 沒有錯誤,但也沒有按鈕。 它是一個UIViewController ,而不是UINavigationViewController

let buttonEdit: UIButton = UIButton.buttonWithType(UIButtonType.Custom) as! UIButton
buttonEdit.frame = CGRectMake(0, 0, 40, 40)
buttonEdit.setImage(UIImage(named:"me44.png"), forState: UIControlState.Normal)
buttonEdit.addTarget(self, action: "rightNavItemEditClick:", forControlEvents: UIControlEvents.TouchUpInside)
var rightBarButtonItemEdit: UIBarButtonItem = UIBarButtonItem(customView: buttonEdit)

let buttonDelete: UIButton = UIButton.buttonWithType(UIButtonType.Custom) as! UIButton
buttonDelete.frame = CGRectMake(0, 0, 40, 40)
buttonDelete.setImage(UIImage(named:"me44.png"), forState: UIControlState.Normal)
buttonDelete.addTarget(self, action: "rightNavItemDeleteClick:", forControlEvents: UIControlEvents.TouchUpInside)

var rightBarButtonItemDelete: UIBarButtonItem = UIBarButtonItem(customView: buttonDelete)

// add multiple right bar button items       
self.navigationController?.navigationItem.setRightBarButtonItems([rightBarButtonItemDelete, rightBarButtonItemEdit] as [AnyObject], animated: true)

//I also tried code below no luck either
self.navigationItem.setRightBarButtonItems([rightBarButtonItemDelete, rightBarButtonItemEdit] as [AnyObject], animated: true)

這段代碼錯了:

self.navigationController?.navigationItem.setRightBarButtonItems(
    [rightBarButtonItemDelete, rightBarButtonItemEdit] as [AnyObject], animated: true)

您沒有設置導航控制器的navigationItem ; 你設置你的 navigationItem 而且, [AnyObject]事情是不必要的。 所以:

self.navigationItem.setRightBarButtonItems(
    [rightBarButtonItemDelete, rightBarButtonItemEdit], animated: true)

但請注意,僅當您的視圖控制器是UINavigationController的子級時才有效。 設置視圖控制器的navigationItem僅在該情況下自動填充導航欄。 如果您處於這種情況 - 即,如果您的界面中只有一個“松散”導航欄 - 您需要手動填充導航欄(通過設置 navigationItem )。

(另請注意,如果您沒有"me44.png"圖像,則可能是您的代碼正在運行,但您只是沒有看到任何內容。)

盡管之前已經說明了,但您可能沒有看到添加到導航欄的按鈕。 對於Swift 3,請在AppDelegate類中嘗試這個(注意topItem ):

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    window = UIWindow()
    window?.backgroundColor = UIColor.white

    let navigationVC = UINavigationController(rootViewController: UIViewController())

    let addButton = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addTodo))
    navigationVC.navigationBar.topItem?.rightBarButtonItem = addButton

    window?.rootViewController = navigationVC
    window?.makeKeyAndVisible()

    return true
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM