প্রোগ্রামিংয়ে নেভিগেশন বারে ইউআইবারবার বাটন আইটেম?


135

আমি কিছুক্ষণের জন্য এই সমাধানটির সন্ধান করছি কিন্তু কিছুই পাই নি। যেমন একটি সমাধান হ'ল

 self.navigationItem.setRightBarButtonItem(UIBarButtonItem(barButtonSystemItem: .Stop, target: self, action: nil), animated: true)

এই কোডটি "স্টপ" চিত্রযুক্ত একটি বোতাম যুক্ত করবে। ঠিক এর মতোই, "অনুসন্ধান," রিফ্রেশ "ইত্যাদির সাথে অন্যান্য সমাধান রয়েছে তবে আমি কী চাই ইমেজের সাথে প্রোগ্রামিকভাবে একটি বোতাম যুক্ত করতে চাই?

উত্তর:


342

বোতামের ফ্রেমটি সেট না করে কাস্টম বোতামের চিত্র:

আপনি init(image: UIImage?, style: UIBarButtonItemStyle, target: Any?, action: Selector?)নির্দিষ্ট চিত্র এবং অন্যান্য বৈশিষ্ট্যগুলি ব্যবহার করে একটি নতুন আইটেম শুরু করতে ব্যবহার করতে পারেন ।

let button1 = UIBarButtonItem(image: UIImage(named: "imagename"), style: .plain, target: self, action: Selector("action")) // action:#selector(Class.MethodName) for swift 3
self.navigationItem.rightBarButtonItem  = button1

এই অ্যাপল ডকটি পরীক্ষা করে দেখুন । উল্লেখ


বোতামের ফ্রেম ব্যবহার করে কাস্টম বোতামের চিত্র সহ UIBarButtonItem

জন্য Swift 3.0

    let btn1 = UIButton(type: .custom)
    btn1.setImage(UIImage(named: "imagename"), for: .normal)
    btn1.frame = CGRect(x: 0, y: 0, width: 30, height: 30)
    btn1.addTarget(self, action: #selector(Class.Methodname), for: .touchUpInside)
    let item1 = UIBarButtonItem(customView: btn1)

    let btn2 = UIButton(type: .custom)
    btn2.setImage(UIImage(named: "imagename"), for: .normal)
    btn2.frame = CGRect(x: 0, y: 0, width: 30, height: 30)
    btn2.addTarget(self, action: #selector(Class.MethodName), for: .touchUpInside)
    let item2 = UIBarButtonItem(customView: btn2)  

    self.navigationItem.setRightBarButtonItems([item1,item2], animated: true)

জন্য Swift 2.0 এবং পুরানো

let btnName = UIButton()
btnName.setImage(UIImage(named: "imagename"), forState: .Normal)
btnName.frame = CGRectMake(0, 0, 30, 30)
btnName.addTarget(self, action: Selector("action"), forControlEvents: .TouchUpInside)

//.... Set Right/Left Bar Button item
let rightBarButton = UIBarButtonItem()
rightBarButton.customView = btnName
self.navigationItem.rightBarButtonItem = rightBarButton

অথবা কেবল init ব্যবহার করুন (কাস্টমভিউ :) পছন্দ করুন

 let rightBarButton = UIBarButtonItem(customView: btnName)
 self.navigationItem.rightBarButtonItem = rightBarButton

সিস্টেম ইউআইবারবারটন আইটেমের জন্য

let camera = UIBarButtonItem(barButtonSystemItem: .Camera, target: self, action: Selector("btnOpenCamera"))
self.navigationItem.rightBarButtonItem = camera

আরও সেট করার জন্য 1 টি আইটেম ব্যবহার করুন rightBarButtonItems বা বাম পাশেleftBarButtonItems

let btn1 = UIButton()
btn1.setImage(UIImage(named: "img1"), forState: .Normal)
btn1.frame = CGRectMake(0, 0, 30, 30)
btn1.addTarget(self, action: Selector("action1:"), forControlEvents: .TouchUpInside)
let item1 = UIBarButtonItem()
item1.customView = btn1

let btn2 = UIButton()
btn2.setImage(UIImage(named: "img2"), forState: .Normal)
btn2.frame = CGRectMake(0, 0, 30, 30)
btn2.addTarget(self, action: Selector("action2:"), forControlEvents: .TouchUpInside)
let item2 = UIBarButtonItem()
item2.customView = btn2

self.navigationItem.rightBarButtonItems = [item1,item2]

ব্যবহার setLeftBarButtonItem বাsetRightBarButtonItem

let btn1 = UIButton()
btn1.setImage(UIImage(named: "img1"), forState: .Normal)
btn1.frame = CGRectMake(0, 0, 30, 30)
btn1.addTarget(self, action: Selector("action1:"), forControlEvents: .TouchUpInside)
self.navigationItem.setLeftBarButtonItem(UIBarButtonItem(customView: btn1), animated: true);

সুইফট> = ২.২ এর জন্য ক্রিয়া হওয়া উচিত #selector(Class.MethodName)... যেমন ...btnName.addTarget(self, action: #selector(Class.MethodName), forControlEvents: .TouchUpInside)


দুর্দান্ত উত্তর। কেবল উল্লেখ করতে চাই যে নির্বাচক পদ্ধতিটি যদিও আপডেট হয়েছেlet camera = UIBarButtonItem(barButtonSystemItem: .Camera, target: self, action: #selector(Class.MethodName))
কোডবেেন্ডার

আমি দেখতে পেয়েছি যে আপনি যদি আপনার বোতামটিও পাঠ্যকে অন্তর্ভুক্ত করতে চান তবে আপনাকে অবশ্যই সিজিআরেক্ট অংশটি নির্দিষ্ট করতে হবে। এসও এর চারপাশে ভাসমান কিছু উদাহরণ রয়েছে যা এটি নির্দিষ্ট করে না।
মাইকা মনটোয়া

আপনার নিখুঁত উত্তরের জন্য ধন্যবাদ। দ্রুত 4 এর জন্য আপডেট যুক্ত করা খারাপ নয়
মিলাদ ফরিদনিয়া

38

Swift 4বা এর সাথে এটি অনেক সহজSwift 4.2

আপনার ViewDidLoadপদ্ধতির ভিতরে , আপনার বোতামটি সংজ্ঞায়িত করুন এবং এটিকে নেভিগেশন বারে যুক্ত করুন।

override func viewDidLoad() {
    super.viewDidLoad()

    let logoutBarButtonItem = UIBarButtonItem(title: "Logout", style: .done, target: self, action: #selector(logoutUser))
    self.navigationItem.rightBarButtonItem  = logoutBarButtonItem

}

তারপরে আপনাকে নীচে ক্রিয়া প্যারামিটারের ভিতরে উল্লিখিত ফাংশনটি সংজ্ঞায়িত করতে হবে

@objc func logoutUser(){
     print("clicked")
}

এটি @objcউপসর্গটি যুক্ত করতে হবে কারণ এটি এখনও উত্তরাধিকারের জিনিসগুলি (উদ্দেশ্য সি) ব্যবহার করছে।


17

শুধু UIBarButtonItemকাস্টমভিউ দিয়ে সেটআপ

উদাহরণ স্বরূপ:

  var leftNavBarButton = UIBarButtonItem(customView:yourButton)
  self.navigationItem.leftBarButtonItem = leftNavBarButton

বা ব্যবহার করুন setFunction:

  self.navigationItem.setLeftBarButtonItem(UIBarButtonItem(customView: yourButton), animated: true);

1
আমি আপনার উত্তরটি ভোটাভুটি করছি কারণ আপনার কোডটিও কাজ করে তবে ভাভিনের কোডটি একটি শট সমাধান তাই আমি তার উত্তরটি গ্রহণ করব। আপনার অবদান সাথীর জন্য ধন্যবাদ :)
রাহুল সোনভেন

11

আমি কেবল এই প্রশ্নটিতে হোঁচট খেয়েছি এবং এখানে সুইফট 3 এবং আইওএস 10 এর আপডেট রয়েছে:

let testUIBarButtonItem = UIBarButtonItem(image: UIImage(named: "test.png"), style: .plain, target: self, action: nil)
self.navigationItem.rightBarButtonItem  = testUIBarButtonItem

এটি সমস্ত বৈশিষ্ট্য সহ ইউআইবাটন তৈরির পরে অবশ্যই কাস্টমভিউটি ইউআইবারবারটন আইটেমের সাথে যুক্ত করার চেয়ে স্পষ্টভাবে দ্রুত faster

এবং যদি আপনি চিত্রের রঙটি ডিফল্ট নীল থেকে যেমন সাদাতে পরিবর্তন করতে চান তবে আপনি সর্বদা রঙিন রঙ পরিবর্তন করতে পারেন:

test.tintColor = UIColor.white()

পিএস আপনার স্পষ্টতই আপনার অ্যাপ্লিকেশনটির জন্য নির্বাচক ইত্যাদি পরিবর্তন করা উচিত :)


7

সুইফট +.০+ তে UIBarButtonItemপ্রোগ্রামিয়্যাটমেটিকভাবে নীচে সেট আপ করা হয়েছে:

   override func viewDidLoad() {
        super.viewDidLoad()
        let testUIBarButtonItem = UIBarButtonItem(image: UIImage(named: "test.png"), style: .plain, target: self, action: #selector(self.clickButton))
        self.navigationItem.rightBarButtonItem  = testUIBarButtonItem
    }

   @objc func clickButton(){
            print("button click")
     }

3

আসল চিত্র সহ বামবার্ট বাটন সেট করা হচ্ছে।

let menuButton = UIBarButtonItem(image: UIImage(named: "imagename").withRenderingMode(.alwaysOriginal), style: .plain, target: self, action: #selector(classname.functionname))
self.navigationItem.leftBarButtonItem  = menuButton

2

আমার একই সমস্যা আছে এবং আমি অন্য বিষয়ে উত্তরগুলি পড়েছি তবে আমি অন্য একইভাবে সমাধান করব। কোনটি বেশি কার্যকর তা আমি জানি না। একই সমস্যা

//play button

@IBAction func startIt(sender: AnyObject) {
    startThrough();
};

//play button

func startThrough() {
    timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("updateTime"), userInfo: nil, repeats: true);

    let pauseButton = UIBarButtonItem(barButtonSystemItem: .Pause, target: self, action: "pauseIt");
    self.toolBarIt.items?.removeLast();
    self.toolBarIt.items?.append( pauseButton );
}

func pauseIt() {
    timer.invalidate();

    let play = UIBarButtonItem(barButtonSystemItem: .Play, target: self, action: "startThrough");
    self.toolBarIt.items?.removeLast();
    self.toolBarIt.items?.append( play );
}

1

এটি আপেলের একটি পাগল জিনিস। আপনি যখন স্ব.নিভিগেশন আইটেম.টাইটার বার্ট বাটন আইটেম.টাইটেল বলবেন তখন এটি জিইউতে থাকাকালীন শুল্কমুক্ত হবে যখন এটি সম্পাদনা বা সংরক্ষণ দেখায়। ফ্রেশার আমাকে পছন্দ করে এই আচরণটি ডিবাগ করতে অনেক সময় নেবে।

আইটেমটি ফার্ট লোডে সম্পাদনাটি দেখায় তারপরে ব্যবহারকারীরা এতে ট্যাপ করে এটি সংরক্ষণ করুন শিরোনামে পরিবর্তিত হবে requirement এটি সংরক্ষণাগারভুক্ত করার জন্য, আমি নীচের মতো করেছিলাম।

// ভিউ করেনি সম্পাদনা শিরোনাম বলবে

private func loadRightBarItem() {
    let logoutBarButtonItem = UIBarButtonItem(title: "Edit", style: .done, target: self, action: #selector(handleEditBtn))
    self.navigationItem.rightBarButtonItem  = logoutBarButtonItem
}

// টিপুন সম্পাদনা আইটেমটি সংরক্ষণের শিরোনামে পরিবর্তিত হবে

@objc private func handleEditBtn() {
    print("clicked on Edit btn")
    let logoutBarButtonItem = UIBarButtonItem(title: "Save", style: .done, target: self, action: #selector(handleSaveBtn))
    self.navigationItem.rightBarButtonItem  = logoutBarButtonItem
    blockEditTable(isBlock: false)
}

// টিপুন সংরক্ষণ করুন আইটেম সম্পাদনা শিরোনাম প্রদর্শিত হবে

@objc private func handleSaveBtn(){
    print("clicked on Save btn")
    let logoutBarButtonItem = UIBarButtonItem(title: "Edit", style: .done, target: self, action: #selector(handleEditBtn))
    self.navigationItem.rightBarButtonItem  = logoutBarButtonItem

    saveInvitation()
    blockEditTable(isBlock: true)

}

1

আইওএস 11

সীমাবদ্ধতা ব্যবহার করে একটি কাস্টম বোতাম সেট করা:

let buttonWidth = CGFloat(30)
let buttonHeight = CGFloat(30)

let button = UIButton(type: .custom)
button.setImage(UIImage(named: "img name"), for: .normal)
button.addTarget(self, action: #selector(buttonTapped(sender:)), for: .touchUpInside)
button.widthAnchor.constraint(equalToConstant: buttonWidth).isActive = true
button.heightAnchor.constraint(equalToConstant: buttonHeight).isActive = true

self.navigationItem.rightBarButtonItem = UIBarButtonItem.init(customView: button)

0
func viewDidLoad(){
let homeBtn: UIButton = UIButton(type: UIButtonType.custom)

        homeBtn.setImage(UIImage(named: "Home.png"), for: [])

        homeBtn.addTarget(self, action: #selector(homeAction), for: UIControlEvents.touchUpInside)

        homeBtn.frame = CGRect(x: 0, y: 0, width: 30, height: 30)

        let homeButton = UIBarButtonItem(customView: homeBtn)


        let backBtn: UIButton = UIButton(type: UIButtonType.custom)

        backBtn.setImage(UIImage(named: "back.png"), for: [])

        backBtn.addTarget(self, action: #selector(backAction), for: UIControlEvents.touchUpInside)

        backBtn.frame = CGRect(x: -10, y: 0, width: 30, height: 30)

        let backButton = UIBarButtonItem(customView: backBtn)
        self.navigationItem.setLeftBarButtonItems([backButton,homeButton], animated: true)
}

}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.