প্রোগ্রামিকভাবে নেভিগেশন শিরোনাম পরিবর্তন করা


187

আমার শিরোনাম সহ একটি নেভিগেশন বার রয়েছে। আমি যখন নামটির জন্য পাঠ্যের উপর ডাবল ক্লিক করব তখন এটি আসলে এটি একটি নেভিগেশন আইটেম বলে, তাই এটি হতে পারে।

আমি কোড ব্যবহার করে পাঠ্য পরিবর্তন করার চেষ্টা করছি, যেমন:

declare navigation bar as navagationbar here
button stuff {
    navigationbar.text = "title"
}

এটি আমার কোডটি স্পষ্টতই নয়, কেবল এটি কীভাবে কাজ করবে তা দেখাচ্ছে।

তাই আমি যখনই বোতাম টিপবো, আমি শিরোনামটি পরিবর্তন করতে চাই।

উত্তর:


537

আপনি প্রদর্শিত হওয়া নিয়ামকটির শিরোনাম পরিবর্তন করে শিরোনাম পরিবর্তন করছেন :

viewController.title = "some title"

সাধারণত দর্শন কন্ট্রোলারের উপর লোড লোড করা হয়:

override func viewDidLoad() {
    super.viewDidLoad()
    self.title = "some title"
}

তবে এটি কেবল তখনই কাজ করে যদি আপনার ইউআইএনএভিগেশন কন্ট্রোলারটিতে আপনার ভিউ কন্ট্রোলার এম্বেড থাকে। আমি অত্যন্ত পরিবর্তে এই কাজ একটি নেভিগেশন নিজেকে বার তৈরি করার পরামর্শ দিই। আপনি যদি নিজে নেভিগেশন বার তৈরির জন্য জোর দেন, আপনি এটি করে শিরোনাম পরিবর্তন করতে পারেন:

navigationBar.topItem.title = "some title"

1
ভিউকন্ট্রোলআর টাইপের শিরোনামযুক্ত কোনও সদস্য নেই। এটাই আমার ত্রুটি।
রাইজিং

2
আপনি এটি সরাসরি ক্লাসে কল করবেন না। আপনি এটি
ইউআইভিউকন্ট্রোলারের

হ্যাঁ, ViewControllerক্লাস নিজেই বোঝায়। আপনি একটি পড়ুন প্রয়োজন উদাহরণস্বরূপ এর ViewController। আপনার ক্লাসের কোনও পদ্ধতির মধ্যে যেমন viewDidLoadআপনি ব্যবহার করে এটি করতে পারেন self। আপনি যদি কোনও ক্লাস এবং উদাহরণের মধ্যে পার্থক্যটি জানেন না, তবে আমি এটির প্রস্তাবটি শিখতে চাই। এই নিবন্ধটি সাহায্য করবে।
অগস্ট

এক্সকোডেও মনোযোগের মতো কাজ করে .. কেবলমাত্র একটি ছোট পরিবর্তন -> self.title = @ "কিছু শিরোনাম";
সারাংশ

self.title = "কিছু শিরোনাম" আমার পক্ষে কাজ করেছে। ধন্যবাদ ! আমি 'নেভিগেশনকন্ট্রোলার' চেষ্টা করছি? .বিভক্তকরণ আইটেম.টাইটেল = "কিছু শিরোনাম"। সত্যিই নিশ্চিত নয় কেন এটি কাজ করে না। (এম্বেডেড নেভিগেশন কন্ট্রোলার ছাড়াও আমার কাছে একটি নেভিগেশন আইটেম রয়েছে, যা আমি শিরোনামটি প্রদর্শন করতে রেখেছি)। আমি এখনও মনে করি এটি কাজ করা উচিত, তবে কেন জানি না। পুনরায় উদ্ধারে স্ট্যাক ওভারফ্লো!
নাইস্তা


13

নীচের কোডটি এক্সকোড 7 সহ আমার জন্য কাজ করে:

override func viewDidLoad() {        
    super.viewDidLoad()
    self.navigationItem.title = "Your Title"
}

10

আমি এটি কাজ করতে পেলাম:

navigationItem.title = "Title"

আপনি কীভাবে কোনও ইউআইএনএভিগেশন কন্ট্রোলারের সন্তানের ভিউ কন্ট্রোলারে শিরোনামটিকে কেন্দ্র করেন? কিছু কারণে পাঠ্যটি বামদিকে সংযুক্ত করা হয়েছে। var customTitle = self.navigationController?.visibleViewController?.navigationItem customTitle?.title = "Some Title"
বাইবেস

5

এবং যদি আপনি Navigation Barম্যানুয়ালি তৈরির চেষ্টা করেন তবে এই কোডটি আপনাকে সহায়তা করবে

func setNavBarToTheView() {
    let navBar: UINavigationBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 64.0))
    self.view.addSubview(navBar);
    let navItem = UINavigationItem(title: "Camera");
    let doneItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.cancel, target: self, action: #selector(CameraViewController.onClickBack));
    navItem.leftBarButtonItem = doneItem;
    navBar.setItems([navItem], animated: true);
}

4

সাধারণত, সেরা অনুশীলন শিরোনাম সেট করা হয় UIViewController। এটি করে UINavigationItem, এছাড়াও সেট করা হয়। সাধারণত, UINavigationBarযা কোনও কিছুর সাথে সংযুক্ত নয় এমন প্রোগ্রামিকভাবে বরাদ্দকরণ এবং প্রারম্ভিককরণের চেয়ে এটি ভাল ।

আপনি যে সুবিধাগুলি এবং কার্যকারিতাটির UINavigationBarজন্য ডিজাইন করেছিলেন তা কিছু মিস করেন । এখানে ডকুমেন্টেশনের লিঙ্ক রয়েছে যা আপনাকে সাহায্য করতে পারে। এটি প্রকৃত বারে এবং একটিতে আপনি যে বিভিন্ন বৈশিষ্ট্য নির্ধারণ করতে পারেন তা আলোচনা করে UINavigationItem

শুধু মনে রাখবেন:

  1. আপনি পিছনে বোতামের কার্যকারিতা হারাবেন (যদি না আপনি নিজেরটি তারের না করেন)
  2. অন্তর্নির্মিত "বাম-হাত থেকে সোয়াইপ ব্যাকের দিকে টানুন" অঙ্গভঙ্গিটি বাজেয়াপ্ত করা হয়েছে

UINavigationControllerআপনার বন্ধুরা।



3

সুইফট 3

আমি নেভিগেশন শিরোনাম বার আইটেমের জন্য একটি আউটলেট তৈরি করেছি যা স্টোরিবোর্ডে নেভিগেশন বারের সাথে আসে (অবজেক্ট ব্রাউজার থেকে)। তারপরে আমি নীচের লাইনে মামলা করলাম:

navigationBarTitleItem.title = "Hello Bar"

2

আপনি যদি নেভিগেশন কন্ট্রোলারে এম্বেড থাকা পৃষ্ঠাগুলি নিয়ন্ত্রণ নিয়ন্ত্রণকারীর চাইল্ড ভিউ কন্ট্রোলার থেকে শিরোনামটি পরিবর্তন করতে চান তবে এটি দেখতে এই রকম হবে:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.parent?.title = "some title"
}

1

আপনার যদি নীচের একটি NavigationControllerদৃশ্যের ভিতরে এম্বেড থাকে TabBarController:

super.tabBarController?.title = "foobar"

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

আপনি ডিবাগার স্ক্রিপ্টগুলির সাথে এই জাতীয় সমস্যাগুলি ডিবাগ করতে পারেন। শ্রেণিবদ্ধের প্রতিটি দৃশ্যমান / লুকানো দৃশ্য মুদ্রণের জন্য চিসেলের pvc আদেশটি চেষ্টা করুন Try


0

সুইফ্ট 4 এ:

সুইফট 4

override func viewDidLoad() {
    super.viewDidLoad()

    self.title = "Your title"
}

আমি আশা করি, এটি সাহায্য করে!


2
এটি গৃহীত উত্তরের মাত্র অর্ধেক। এছাড়াও, যদি আপনি বলেন যে কিছুই পরিবর্তিত হয়নি, তবে আপনি কেন কিছু পোস্ট করবেন ?! দয়া করে মুছে দিন.
এরিক আয়া

@ মরিৎজ আপনি কি মডারেটর নাকি এরকম কিছু? যদি হ্যাঁ বলে, আমি এটি মুছব, না হলে আমি এটি মুছব না।
রাদেমস ই। হার্নান্দেজ

1
আপনি সত্যিই এটি বলছেন ?, আমার উপরে ৪ টি সম্পূর্ণ সমান উত্তর রয়েছে, তবে আপনি কেন আমার সাথে এসে আমার মুছতে বলছেন? আমি সম্প্রদায়কে সমর্থনকারী একটি বিশ্বস্ত ব্যবহারকারী, আমি কেবল উত্তরগুলি পুনরাবৃত্তি করছি না। আমি সবেমাত্র একটি আপডেট সুইফ্ট সংস্করণ দিয়ে এই প্রশ্নটি আপডেট করতে চেয়েছিলাম।
র‌্যাডেমস ই। হার্নান্দেজ

3
আপনার উত্তরে আপডেটের কিছু নেই। এটি স্বীকৃত উত্তরের মতো একই কোড, "সাধারণত লোড লোড লোড দেখায় এটি করা হয়" অংশ ...
এরিক আয়া

0

আমি নেভিগেশন বারে শিরোনাম সরবরাহ করতে self.navigationItem.title = "Your Title Here"ওভার ব্যবহার পছন্দ করি self.title = "Your Title Here"যেহেতু ট্যাব বারও self.titleএর শিরোনাম পরিবর্তন করতে ব্যবহার করে। আপনার নিম্নলিখিত কোডটি একবার ব্যবহার করে দেখুন।

দ্রষ্টব্য: আপনার কোনও স্টাফ করার আগে সুপার ভিউ লাইফাইসাইকেলটি কল করা প্রয়োজনীয়।

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        setupNavBar()
    }
}

private func setupNavBar() {
    self.navigationItem.title = "Your Title Here"
}

0

সুইফট 5.1

override func viewDidLoad() {
    super.viewDidLoad()
    navigationItem.title = "What ever you want"
}

0

সুইফট 5.1

// ন্যাভিগেশনবার শিরোনামটি প্রোগ্রামিকভাবে এবং ডায়নামিক সেট করুন

দ্রষ্টব্য: প্রথমে আপনার নেভিগেশনকন্ট্রোলার ViewControllerআইটেমটি আপনার তারপরে যুক্ত ViewController.swiftকরুন এবং কেবল এটিকে অনুলিপি করুন এবং আটকান viewDidLoad()

navigationItem.title = "Your Title Here"

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