ট্যাববার আইটেম শিরোনাম থেকে আলাদা করে কীভাবে ইউভিউকন্ট্রোলার শিরোনাম পরিবর্তন করবেন


104

আমি আমার ভিউ কন্ট্রোলারদের শিরোনামটি এমনভাবে দেখছি যা লোড হয়েছে:

self.title = @"my title";

এর আগে আমি স্টোরি বোর্ডগুলিতে শিরোনামটি দৃ control়ভাবে সেট করে ভিউ কন্ট্রোলার এবং নেভিগেশন নিয়ামক এটিতে এম্বেড করা হয় I আমি এটি সেট করেছি: "শিরোনাম";

আমি যখন ট্যাবটিতে ক্লিক করি যা ভিউ কন্ট্রোলারটিকে ট্যাব বার আইটেমের শিরোনাম ধারণ করে এবং এতে uiviewcontrollerপরিবর্তন হয়: আমার শিরোনাম

আমি ভিউ কন্ট্রোলারের পরিবর্তন করতে চাই তবে ট্যাব বার আইটেমটি শিরোনাম: শিরোনামের সাথেই থাকুক

আমি কীভাবে এটি সম্পাদন করতে পারি?

উত্তর:


221

দেখে মনে হচ্ছে আপনি নেভিগেশন বারের শিরোনামটি পরিবর্তন করতে চান তবে ট্যাববারের শিরোনামটি নয়। এটি করা উচিত।

[self.navigationItem setTitle:@"my title"];

সুইফট:

self.navigationItem.title = "My Title"

1
নিশ্চিত হয়ে নিন, আপনি যদি এখনও নিজের ইউটিববার শিরোনামটি সেট করতে সেলফ.টাইটেল ব্যবহার করে থাকেন, সেলফাইভেশন সেটিং টাইটেলটি সেট করার পরে অন্যথায় এটি কাজ করবে না
সিমোন_স্মাইলি

2
এক্সকোড 9 এবং আইওএস 11 এ সুইফট 4 এ ত্রুটি দেখায় যে শিরোনামের দ্ব্যর্থহীন ব্যবহার
সুশোভিত

1
এক্সকোড 10.2 এ আমার জন্য সুইফট 4.2 ব্যবহার করে কাজ করা, ধন্যবাদ একটি টন!
জাঙ্গেলসবি

174

সুতরাং যারা এখনও তা পান না তাদের জন্য (আমার মতো)

self.navigationItem.title = @"my title";নেভিগেশন বার শিরোনাম সেট করে ।

self.tabBarItem.title = @"my title";ট্যাব বার শিরোনাম সেট করে ।

self.title = @"my title";এই দুটি সেট করে


20

দ্রুতগতি

শীর্ষ বার শিরোনাম সেট করুন

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

ট্যাব আইটেমের শিরোনাম সেট করুন

self.tabBarController?.tabBar.items?[0].title = "tab title"

উভয় শিরোনাম সেট করুন

self.title = "both titles"


2
আমার কনফিগারেশনে এটিই আমার শীর্ষ বারের শিরোনামটি নির্ধারণ করার একমাত্র উপায় ছিল, কেন "স্ব.ব্যাভিগেশন আইটেম.টাইটেল" আমার পক্ষে কাজ করে না তা নিশ্চিত নয়।
জনিসি

7

সুইফ্ট এটি ব্যবহারের জন্য ,

self.navigationItem.title = "Navigation bar title" 
self.title = "Tab bar title"

এক্সকোড 9 এবং আইওএস 11 এ সুইফট 4-এ (স্ব.নাভিগেশন.টাইটেল) শিরোনামের দ্ব্যর্থহীন ব্যবহারের ত্রুটি দেখাচ্ছে
সুশোভিত

6

দ্রষ্টব্য: প্রতিটি ভিউ কন্ট্রোলারের মূলে আপনার যদি নেভিগেশন কন্ট্রোলারগুলির সাথে একটি ট্যাব বার নিয়ামক থাকে, ভিউ কন্ট্রোলারে ট্যাব বার আইটেমটি সেট করা শিরোনামকে প্রভাবিত করে না যদি আপনি সেট করে থাকেন navigationItem.titletabBarItemএটি আপনাকে ট্যাব বার নিয়ামক থেকে তুলে নেওয়ার পরিবর্তে নেভিগেশন কন্ট্রোলারে সেট করতে হবে।

উত্তর অন্যের দ্বারা পোস্ট করা কোনটিই আমার জন্য কাজ কারণ আমার ট্যাব বার দৃষ্টিভঙ্গি কন্ট্রোলার তাদের সমস্ত root- এ গৌণ কন্ট্রোলার আছে - এই জন্য একটি সাধারণ অনুক্রমের প্যাটার্ন UITabBarController। আপনি ন্যাভিগেশন নিয়ামক এর সেট করতে tabBarItemশিরোনাম পেতে পরিবর্তে থেকে ভিন্নভাবে দেখানোর জন্য navigationItem'র শিরোনাম

আপনি নিজের তৈরি করতে tabBarItemএবং এটিকে সরাসরি আপনার ভিসির সাথে সংযুক্ত করতে পারেন।

    let tabBarVCOne = BooksListViewController()
    tabBarVCOne.tabBarItem = UITabBarItem(title: "Books", image: nil, tag: 0)

    tabBarViewControllers.append(tabBarVCOne)
    ...

তারপরে আপনার এই জাতীয় কিছু থাকবে:

    //Wrap each view controller in a navigation controller. 
    self.viewControllers = tabBarViewControllers.map(UINavigationController.init)

tabBarItemভিউ কন্ট্রোলার থেকে ইতিমধ্যে সংশ্লিষ্টদের ধরতে এবং নেভিগেশন কন্ট্রোলারে স্বয়ংক্রিয়ভাবে সেট করার জন্য এটি নীচে পরিবর্তন করা উচিত ।

    self.viewControllers = tabBarViewControllers.map({
        let navigationController = UINavigationController(rootViewController: $0)
        navigationController.tabBarItem = $0.tabBarItem
        return navigationController
    })

আপনি এখন নিজের জন্য সংজ্ঞায়িত শিরোনাম থেকে আলাদা একটি শিরোনাম (আপনার উপাচার্য থেকে সেট) করতে সক্ষম হবেন tabBarItem


0

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

জ:

@interface YourTabBarController : UITabBarController <UITabBarControllerDelegate, UINavigationControllerDelegate>

@end

.m:

- (void) viewDidLoad {
    // UITabBarControllerDelegate
    self.delegate = self;

    // UINavigationControllerDelegates
    yourNavigationController.delegate = self;
    ...
}

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{
    yourNavigationController.tabBarItem.title = @"Tab Bar Title";
    ...
}

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
    yourNavigationController.tabBarItem.title = @"Tab Bar Title";
    ...
}

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


0

সম্ভবত কিছুটা দেরি (তবে)।

ভিসির শিরোনাম সেট করা নেভিগেশন এবং ট্যাববারের শিরোনাম পরিবর্তন করে। (ভিসি যদি ইতিমধ্যে উভয়ের সাথে সংযুক্ত থাকে)।

আপনি যদি আলাদা আলাদা শিরোনাম রাখতে চান তবে আপনাকে সেগুলি ম্যানুয়ালি সেট করতে হবে, আপনি সাধারণত উপাচার্যের জন্য শিরোনাম এবং তারপরে বিশেষত ট্যাববার্ট আইটেমের শিরোনাম সেট করুন, কারণ এটি একটি সম্পত্তি


0

সুইফট 4.2

আপনি এখানে যান, আমি ইউআইভিউউকন্ট্রোলারের জন্য একটি এক্সটেনশন তৈরি করেছি:

import UIKit

extension UIViewController {

/// Setting the navigation title and tab bar title
///
/// - Parameters:
///   - navigationTitle: Navigation title
///   - tabBarTitle: TabBar title
func setTitles(navigationTitle: String, tabBarTitle: String) {
    // Order is important here!
    title = tabBarTitle
    navigationItem.title = navigationTitle
 }

}

এবং তারপরে আপনার নিয়ামক থেকে:

override func viewDidLoad() {
    super.viewDidLoad()
    setTitles(navigationTitle: "Login", tabBarTitle: "Home")
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.