কীভাবে সুইফটে বোতামের পাঠ্য সেট করবেন


207

আপনি কীভাবে পিছনের বোতামের পাঠ্য সরাবেন।

বর্তমান পিছনে বোতাম:

<পিছনে

পছন্দসই ব্যাক বোতাম:

<যেকোন কিছু

এর মধ্যে কোনওটিই কাজ করেননি:

self.navigationItem.backBarButtonItem?.title = "Back"
self.backItem?.title = ""
self.navigationController?.navigationBar.backItem?.title = ""
self.navigationItem.backBarButtonItem?.title = ""
self.navigationController?.navigationItem.backBarButtonItem?.title="Back"
self.navigationController?.navigationBar.backItem?.title = ""
self.navigationController?.navigationItem.backBarButtonItem?.title

উত্তর:


604

পিছনের বোতামটি পূর্বের ভিউ নিয়ন্ত্রকের অন্তর্ভুক্ত, বর্তমানে স্ক্রিনে উপস্থাপিত নয়।
পিছনের বোতামটি সংশোধন করার জন্য আপনাকে সিগ শুরু করা ভিউ কন্ট্রোলারে ধাক্কা দেওয়ার আগে এটি আপডেট করা উচিত :

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    let backItem = UIBarButtonItem()
    backItem.title = "Something Else"
    navigationItem.backBarButtonItem = backItem // This will show in the next view controller being pushed
}

সুইফট 3, 4 এবং 5:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let backItem = UIBarButtonItem()
    backItem.title = "Something Else"
    navigationItem.backBarButtonItem = backItem // This will show in the next view controller being pushed
}

অথবা

// in your viewDidLoad or viewWillAppear
navigationItem.backBarButtonItem = UIBarButtonItem(
    title: "Something Else", style: .plain, target: nil, action: nil)

9
অনেক ধন্যবাদ, আপনি জানেন না যে আমি কেবলমাত্র সেই ছোট বিশদটির জন্য (পূর্ববর্তী নিয়ামক) কত ঘন্টা ব্যয় করেছি
রিকার্ডো

3
যদি আমি এক মিলিয়ন বার upvote করতে পারে। এটি কেন কাজ করছে না তা ভেবে ভেবে আমি কত দিন ব্যয় করলাম তা বলতে পারি না (আগে গন্তব্য নিয়ন্ত্রক ছিল)
ডিলান আয়ারল্যান্ড

13
"পিছনের বোতামটি পূর্বের ভিউ কন্ট্রোলারের সাথে সম্পর্কিত" এটি সর্বাধিক মূল্যবান উত্তর যা আমি এই বিষয়টি সম্পর্কে পেয়েছি! ধন্যবাদ!
vhristoskov

1
titleপরিবর্তনের শিরোনামটি সেট করা , কেবল পিছনের বোতামটি নয়।
ইয়ারিভ নিসিম

4
! আমি self.navigationController .navigationBar.topItem .backBarButtonItem = backItem পরিবর্তে navigationItem.backBarButtonItem = backItem এবং এটি সুইফট 3. উপর কাজ করে জরিমানা আপনাকে ধন্যবাদ যোগ
ইন্দ্র আদম

125

আপনি ইন্টারফেস নির্মাতা থেকে নিম্নলিখিত হিসাবে এটি করতে পারেন:

পূর্ববর্তী ভিউ কন্ট্রোলারের নেভিগেশন আইটেমটিতে ক্লিক করুন

এখানে চিত্র বর্ণনা লিখুন

বৈশিষ্ট্যগুলি থেকে পরিদর্শক আপনি যা চান তার পিছনে বোতামের পাঠ্য সেট করে। এটাই!!

এখানে চিত্র বর্ণনা লিখুন


1
'নিল' বরাদ্দের সেরা উপায় কি?
কেনেস্টাস্ট

@Kennydust আপনার অর্থ ফাঁকা শিরোনাম?
আজিঙ্ক্যা পাতিল

8
@ একনিডাস্ট হ্যাঁ পিছনের বোতামে স্থান যুক্ত করুন এবং এন্টার টিপুন
অজিংক্যা পাতিল

সুন্দর এবং সহজ, তবে এটি কি স্থানীয়করণযোগ্য?
গ্রানটেকস

2
@ অজিংকাপতিল আমি এটি চেষ্টা করেছিলাম কিন্তু পিছনের বোতামটি প্রদর্শিত হয় না। এটি হতে পারে এমন কোনও কারণ?
ব্যবহারকারী 805981

48

ব্যাক-বোতামের পাঠ্যটি প্যারেন্ট ভিউ-কন্ট্রোলারের নেভিগেশন আইটেম শিরোনাম থেকে নেওয়া হয়েছে। সুতরাং আপনি পূর্ববর্তী ভিউ-কন্ট্রোলারের নেভিগেশন আইটেম শিরোনামে যা কিছু সেট করুন না কেন, বর্তমান দর্শনের নিয়ামকের পিছনের বোতামের পাঠ্যে প্রদর্শিত হবে। আপনি কেবল প্যারেন্ট ভিউ-কন্ট্রোলারের ভিউ উইল অ্যাপয়ার পদ্ধতিতে নেভিগেশন আইটেমের শিরোনাম হিসাবে রাখতে পারেন।

self.navigationItem.title = ""

আরেকটি উপায় রাখা হয়

self.navigationController?.navigationBar.topItem?.title = ""

বর্তমান দেখুন নিয়ামকের ভিউউইল অ্যাপয়ার পদ্ধতিতে। নেভিগেশন স্ট্যাকটি খুব বেশি নেস্টেড থাকলে এইটি কিছু অন্যান্য সমস্যার কারণ ঘটবে।


5
self.navicationItem.title = "" সেরা উত্তর হিসাবে শীর্ষে থাকা উচিত!
রিলার

উপরোক্ত সমস্ত উত্তরের জন্য নেভিগেশন আইটেমটিতে একটি লক্ষ্য ফাংশন যুক্ত করা দরকার বলে উত্তরের উত্তরের কারণ হিসাবে আমি এটির সাথে একমত নই, সুতরাং তারা কেবল পাঠ্য পরিবর্তন করে না তবে তারা একটি কাস্টম পপ ফাংশনও যুক্ত করে, যা প্রশ্নের প্রয়োজন হয় না!
ইসফফা

এটি ভাল কাজ করে prepareForSegueযা। একটু ক্লিনার কারণ আপনি নতুন ভিউ কন্ট্রোলারটি লোড হওয়ার পরে এটি পরিবর্তন করছেন না।
অ্যাড্রিয়ান

মনোযোগ দিন!!! সেলিব্রেটিআইটি.টাইটেল = ""
লেভি

45

আপনি পিছনের বোতামের শিরোনামটি পরিবর্তন করতে চান এমনটিতে এই 3 লাইন কোডটি রাখতেViewController পারেন।

আপনার override func viewDidLoad() {}

let backButton = UIBarButtonItem()
backButton.title = "My Back Button Title"
self.navigationController?.navigationBar.topItem?.backBarButtonItem = backButton

2
এই সমাধানটি আরও সঠিক বলে মনে হচ্ছে, আপনি যে ভিসি চলে যাচ্ছেন তা নয়, আগত ভিসির মধ্যে যুক্তি যুক্ত করার কারণে। আক্কা: আরও ভাল পড়া
স্বশাসিত এনিস্ট

37

আপনি যদি ভিউ কন্ট্রোলারের জন্য এক্সিব ফাইল ব্যবহার করেন তবে আপনার ভিউ নিয়ন্ত্রক শ্রেণিতে এটি করুন।

class AboutUsViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()
    edgesForExtendedLayout = []
    setUpNavBar()
}

func setUpNavBar(){
    //For title in navigation bar
    self.navigationController?.view.backgroundColor = UIColor.white
    self.navigationController?.view.tintColor = UIColor.orange
    self.navigationItem.title = "About Us"

    //For back button in navigation bar
    let backButton = UIBarButtonItem()
    backButton.title = "Back"
    self.navigationController?.navigationBar.topItem?.backBarButtonItem = backButton
}

}

ফলাফলটি হবে:

এখানে চিত্র বর্ণনা লিখুন


29

আমি জানি না আপনি কোথায় আপনার পদ্ধতিগুলি ব্যবহার করেছেন যা আপনি নিজের প্রশ্নে রেখেছিলেন তবে আমি আমার ViewControllerক্লাসে (যেখানে আমি পিছনের বোতামটি পরিবর্তন করতে চাই) viewDidLoad()ফাংশনে, নিম্নলিখিত লাইনটিতে ব্যবহার করলে পছন্দসই ফলাফলটি পেতে পারি :

self.navigationController?.navigationBar.backItem?.title = "Anything Else"

ফলাফলটি হবে:

আগে

এখানে চিত্র বর্ণনা লিখুন

পরে

এখানে চিত্র বর্ণনা লিখুন


3
আমার ক্ষেত্রে এটি কেবল তখনই কাজ করে যদি আপনি এই কোডটি টুকরোটি ভিডিডআইপিয়ার পদ্ধতিতে রাখেন এবং ভিডডিডলডটি নয়
এপিনহো

2
navigationController.navigationBar.topItem?.title = ""এটি এড়াতে এড়াতে ব্যবহার করুনviewDidAppear
জোসে

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

22

পিছনের বোতামটি পূর্বের ভিউ নিয়ন্ত্রকের অন্তর্ভুক্ত, বর্তমানে স্ক্রিনে উপস্থাপিত নয়। পিছনের বোতামটি সংশোধন করার জন্য আপনাকে চাপ দেওয়ার আগে এটি আপডেট করা উচিত, ভিউডিডলোড যুক্ত করুন:

সুইফট 4:

self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: self, action: nil)

12

আপনি কেবল স্টোরিবোর্ডে নেভিগেশন আইটেমটি পরিবর্তন করতে পারেন

এখানে চিত্র বর্ণনা লিখুন

পিছনে বোতামে একটি স্থান যুক্ত করুন এবং এন্টার টিপুন।

দ্রষ্টব্য: এটি আগের ভিসিতে করুন।


8

সুইফট 4 - কোনও ভিউ কন্ট্রোলারদের ধাক্কা দেওয়ার আগে পিছনের বোতামটি কনফিগার করুন

// if you want to remove the text
navigationItem.backBarButtonItem = UIBarButtonItem()

// if you want to modify the text to "back"
navigationItem.backBarButtonItem = UIBarButtonItem(title: "back", style: .plain, target: nil, action: nil)

8

এই কাজ করা উচিত:

override func viewDidLoad() {
    super.viewDidLoad()

    var button = UIBarButtonItem(title: "YourTitle", style: UIBarButtonItemStyle.Bordered, target: self, action: "goBack")
    self.navigationItem.backBarButtonItem = button

}

func goBack()
{
    self.navigationController?.popViewControllerAnimated(true)
}

যদিও এটি প্রস্তাবিত নয় কারণ এটি আসলে ব্যাকবটনটি প্রতিস্থাপন করে এবং এটি পিছনের তীর এবং সোয়াইপ অঙ্গভঙ্গিও সরিয়ে দেয়।


10
এটি করার সঠিক উপায় নয়, আপনি কেবল পিছনের বোতামটি প্রতিস্থাপন করছেন
ইয়ারিভ নিসিম

ইন্টারফেস বিল্ডারের কাছ থেকে এটি করা ভাল
রাটার হুইজম্যানস

7

সুইফট 4.2

আপনি যদি নেভিগেশন বারের পিছনে বাটন আইটেমের পাঠ্যটি পরিবর্তন করতে চান viewDidLoadতবে পিছনের বোতামটি যেখানে প্রদর্শিত হবে সেখানে যেখানে নিয়ন্ত্রণ নেই সেখানে ব্যাক বোতামটি প্রদর্শিত হবে তার আগে কন্ট্রোলারে এটি রেখে দিন back

 let backButton = UIBarButtonItem()
 backButton.title = "New Back Button Text"
 self.navigationController?.navigationBar.topItem?.backBarButtonItem = backButton

আপনি যদি বর্তমান নেভিগেশন বারের শিরোনাম পাঠ্যটি পরিবর্তন করতে চান তবে নীচের কোডটি ব্যবহার করুন (দ্রষ্টব্য ন্যাভিগেশন নিয়ামকের দিকে এগিয়ে আসা নেক্সট ভিউয়ের জন্য এটি ডিফল্ট ব্যাক পাঠ্য হয়ে ওঠে, তবে এই ডিফল্ট ব্যাক পাঠ্যটি উপরের কোড দ্বারা ওভাররাইড করা যেতে পারে)

 self.title = "Navigation Bar Title"

6

দুটি উপায় আছে।

1. পূর্ববর্তী ভিউকন্ট্রোলআর.ভিউডিডলডে ()

let backBarBtnItem = UIBarButtonItem()
backBarBtnItem.title = "back"
navigationItem.backBarButtonItem = backBarBtnItem

২. বর্তমানের ভিউকন্ট্রোলআর.ভিউডিডঅ্যাপারে ()

let backBarBtnItem = UIBarButtonItem()
backBarBtnItem.title = "back"      
navigationController?.navigationBar.backItem?.backBarButtonItem = backBarBtnItem

কারণ: backButtonথেকে এসেছে navigationBar.backItem.backBarButtonItem, তাই প্রথম উপায়টি সুস্পষ্ট current বর্তমান ভিউকন্ট্রোলআরভিউডিডলিড ()-তে, আমরা এর উল্লেখটি পেতে পারি না backItem, কারণ ভিউডিডঅ্যাপার () এ, এটির উপরে navigationBarচাপ দেওয়া হয়েছে so তাই আমরা পরিবর্তন করতে পারিnavigationViewstackbackItem কারেন্টভিউকন্ট্রোলারে পারি। viewDidAppear ()

আরও তথ্যের জন্য, আপনি দস্তাবেজটি দেখতে পাবেন : ইউআইএনএভিগেশন বার


3

ইন viewDidLoadপদ্ধতি উপস্থাপন নিয়ামক অ্যাড:

// hide navigation bar title in the next controller
let backButton = UIBarButtonItem(title: "", style:.Plain, target: nil, action: nil)
navigationItem.backBarButtonItem = backButton

2

যদিও এই উত্তরগুলি সমস্যার সমাধান করে তবে এটি কিছু কার্যকর হতে পারে

class MainNavigatioController: UINavigationController {

    override func pushViewController(_ viewController: UIViewController, animated: Bool) {
        // first
        let backItem = UIBarButtonItem()
        backItem.title = "رجوع"
        self.viewControllers.last?.navigationItem.backBarButtonItem = backItem
        // then
        super.pushViewController(viewController, animated: animated)

    }

}

2

সুইফট 4

যদিও সিগুয়ের জন্য প্রস্তুত করার পূর্বের কথাটি সঠিক এবং সত্যিকারের পিছনের বোতামটি আগের ভিসির সাথে সম্পর্কিত, এটি কেবল একটি গুচ্ছকে আরও অযৌক্তিক কোড যুক্ত করেছে।

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

navigationController?.navigationBar.topItem?.title = "Title"

2

এটি সুইফট 5 এর জন্য কাজ করে :

self.navigationItem.backBarButtonItem?.title = ""

দয়া করে নোট করুন এটি পরবর্তী ধাক্কাযুক্ত ভিউ কন্ট্রোলারের জন্য কার্যকর হবে বর্তমান প্রদর্শনীতে নয়, তাই এটি খুব বিভ্রান্তিকর!

এছাড়াও, স্টোরিবোর্ডটি পরীক্ষা করে দেখুন এবং পূর্ববর্তী ভিউ কন্ট্রোলারের নেভিগেশন আইটেমটি নির্বাচন করুন তারপরে পিছনে বোতামে (ইন্সপেক্টর) কিছু টাইপ করুন।


1

এটি চেষ্টা করুন ... এটি কাজ করবে ....

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    self.title = ""
}

উপরের কোডটি পাঠ্যটি আড়াল করবে এবং নেভিগেশন বারে কেবল পিছনের তীরটি প্রদর্শন করবে।


0

self.title = "" আগে সেট করুন self.navigationController?.pushViewController(vc, animated: true)


0
override func viewWillAppear(_ animated: Bool) {

    self.tabBarController?.navigationItem.title = "Notes"

    let sendButton = UIBarButtonItem(title: "New", style: .plain, target: self, action: #selector(goToNoteEditorViewController))

    self.tabBarController?.navigationItem.rightBarButtonItem = sendButton
}

func goToNoteEditorViewController(){
   // action what you want
}

আশা করি এটা সাহায্য করবে!! # সুইফট 3


0

আপনি যদি পৃষ্ঠা ভিউ নিয়ন্ত্রণকারী পৃষ্ঠা থেকে একটি দর্শন নিয়ামককে চাপ দিচ্ছেন, আপনি নেভিগেশন নিয়ন্ত্রকের পিছনের বোতামের শিরোনাম আপডেট করতে পারবেন না। এটি সমাধানের জন্য আপনার পিতামাতা ভিউ কন্ট্রোলারে ফিরে কোনও প্রতিনিধি তৈরি করুন (আপনি ভিউ কন্ট্রোলার হায়ারার্কিকে পিতামাতার কাছে ফিরে যেতেও সক্ষম হতে পারেন)।

তদ্ব্যতীত, পিছনে বোতামগুলির একটি চরিত্রের সীমা থাকে। যদি আপনি এই চরিত্রের সীমাটি অতিক্রম করেন, সিস্টেমটি "ব্যাক" এ ডিফল্ট হবে। এটি আপনার জন্য কেটে যাবে না। উদাহরণ স্বরূপ:

backItem.title = "Birthdays/Anniversaries" // Get's converted to "Back".
backItem.title = "Birthdays/Anniversa…" // Fits and shows as is.

0

সুইফট 4

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

MasterController

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    navigationItem.title = "Master Title"
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    navigationItem.title = ""
}

এবং এইভাবেই আমি একটি ইউআইভিউউকন্ট্রোলারকে ধাক্কা দিয়েছি এবং শিশু নিয়ন্ত্রকের পিছনে বার বোতাম আইটেমটি সাফ করব:

MasterController

let childController = ChildController(collectionViewLayout: UICollectionViewFlowLayout())
childController.navigationItem.backBarButtonItem?.title = ""
navigationController?.pushViewController(childController, animated: true)


0

গোটচা: যদি আপনি অনেকগুলি তারকাযুক্ত পরামর্শের সাথে কোনও সমস্যা হয়ে থাকেন তবে নিশ্চিত হন যে আপনি নিজের নিবন্ধন UITableViewCellকরছেন viewDidLoad(), এ থেকে নয়init()


-1

সমাধান চেক করা হয়েছে এবং সুইফ্ট 5-এ কাজ করুন

নীচে আমি বিভিন্ন মামলার কয়েকটি সমাধান রেখেছি:

1. পিছনের বোতাম থেকে পাঠ্য সরান

ব্যাক বোতাম থেকে পাঠ্য অপসারণের সেরা সমাধানটি ভিউডিডলড () এ যুক্ত করা:

navigationItem.backBarButtonItem = UIBarButtonItem()

২. ব্যাক বোতামে নিজস্ব পাঠ্য সেট করুন

আপনি যদি নিজের শিরোনাম সেট করতে চান তবে ব্যাকবটনটির শিরোনাম সেট করে এটি করুন:

let backButton = UIBarButtonItem()
backButton.title = "My Title"
navigationItem.backBarButtonItem = backItem

3. সমস্ত উপাচার্য খালি ফিরে বোতাম

আপনি যদি পুরো অ্যাপ্লিকেশনটিতে সাধারণ শৈলী তৈরি করতে চান - পাঠ্য ছাড়াই ফিরে তীরচিহ্ন রাখতে, আপনার সমস্ত দেখুন কন্ট্রোলারের জন্য বেস ভিসি তৈরি করুন:

class BaseViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        navigationItem.backBarButtonItem = UIBarButtonItem()
    }
}

উপরে উপস্থাপিত সমাধানটি আপনাকে ভবিষ্যতে কিছু ব্যতিক্রম করতে চাইলে অতিরিক্ত ভেরিয়েবল যুক্ত করে এবং নির্দিষ্ট ভিউকন্ট্রোলারে ওভাররাইড করে, f.ex: আপনি ভবিষ্যতে ব্যাক কাস্টমাইজ করতে দিন:

class BaseViewController: UIViewController {

    var customBackButtonTitle: String?

    override func viewDidLoad() {
        super.viewDidLoad()

        var backButton = UIBarButtonItem()
        if let text = customBackButtonTitle {
            backButton.title = text
        }
        navigationItem.backBarButtonItem = backButton
    }
}

-2

দ্রুত 4

বর্তমান ভিউ কন্ট্রোলার থেকে প্রোগ্রামব্যাটিকভাবে ব্যাকবটনে পাঠ্য পরিবর্তন করার একটি উপায় রয়েছে:

navigationController?.navigationBar.items![0].title = "some new text"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.