UINavigationController এর ব্যবহার
UINavigationController হলো UIKit-এর একটি কম্পোনেন্ট যা iOS অ্যাপে হায়ারারক্যাল নেভিগেশন পরিচালনা করতে ব্যবহৃত হয়। এটি ভিউ কন্ট্রোলারগুলোর মধ্যে স্ট্যাক ভিত্তিক নেভিগেশন প্রদান করে, যা ব্যবহারকারীকে একটি ভিউ থেকে অন্য ভিউতে যাওয়ার এবং সহজে ব্যাক বা ফরওয়ার্ড নেভিগেশন করার সুযোগ দেয়। সাধারণত, UINavigationController টপে একটি নেভিগেশন বার প্রদর্শন করে, যা বর্তমান স্ক্রিনের শিরোনাম, ব্যাক বোতাম, এবং অন্যান্য অপশন দেখানোর জন্য ব্যবহৃত হয়।
UINavigationController কেন ব্যবহার করবেন?
- স্ট্যাক ভিত্তিক নেভিগেশন: এটি ভিউ কন্ট্রোলারগুলোকে স্ট্যাকের মতো পরিচালনা করে। একটি নতুন ভিউ কন্ট্রোলার পুশ করার সময় এটি স্ট্যাকের শীর্ষে যোগ হয়, এবং ব্যাক করলে এটি পপ হয়।
- নেভিগেশন বার: প্রতিটি স্ক্রিনে শিরোনাম, ব্যাক বোতাম, এবং কাস্টম আইটেম দেখানোর সুযোগ দেয়।
- ইউজার ফ্রেন্ডলি নেভিগেশন: ব্যবহারকারী সহজেই ব্যাক এবং ফরওয়ার্ড নেভিগেশন করতে পারে।
- মাল্টি-ভিউ অ্যাপ্লিকেশন: জটিল মাল্টি-ভিউ অ্যাপ্লিকেশন যেমন ফাইল ম্যানেজার, সেটিংস অ্যাপ ইত্যাদি তৈরি করতে কার্যকর।
UINavigationController কিভাবে কাজ করে?
UINavigationController একটি root view controller থেকে শুরু হয় এবং পরবর্তীতে নতুন ভিউ কন্ট্রোলারগুলোকে স্ট্যাকের উপর পুশ করা হয়। প্রতিবার যখন একটি ভিউ কন্ট্রোলার পুশ করা হয়, তখন এটি UINavigationController-এর নেভিগেশন স্ট্যাকের শীর্ষে যোগ হয়। ব্যাক করলে (ব্যাক বোতাম ট্যাপ করে বা প্রোগ্রাম্যাটিক্যালি) এটি স্ট্যাক থেকে সরিয়ে ফেলা হয় এবং পূর্বের ভিউ কন্ট্রোলারে ফিরে যায়।
UINavigationController এর ব্যবহার:
1. Storyboard-এর মাধ্যমে UINavigationController সেটআপ করা:
- Step 1: Xcode-এর Storyboard-এ একটি ভিউ কন্ট্রোলার যোগ করুন, যা আপনার Root View Controller হিসেবে কাজ করবে।
- Step 2: এই ভিউ কন্ট্রোলারকে সিলেক্ট করুন এবং Editor > Embed In > Navigation Controller নির্বাচন করুন। এটি আপনার ভিউ কন্ট্রোলারকে UINavigationController-এর সাথে সংযুক্ত করবে।
- Step 3: এখন আপনার অ্যাপের নেভিগেশন সেটআপ হয়ে গেছে, এবং আপনি নতুন ভিউ কন্ট্রোলার পুশ করতে পারবেন।
2. প্রোগ্রাম্যাটিক্যালি UINavigationController ব্যবহার করা:
// Root view controller তৈরি
let rootViewController = ViewController()
// UINavigationController তৈরি এবং রুট ভিউ কন্ট্রোলার সেট করা
let navigationController = UINavigationController(rootViewController: rootViewController)
// উইন্ডোর রুট ভিউ কন্ট্রোলার হিসেবে সেট করা
window?.rootViewController = navigationController
window?.makeKeyAndVisible()
View Controller পুশ করা এবং পপ করা:
1. View Controller পুশ করা:
নতুন ভিউ কন্ট্রোলার পুশ করার জন্য pushViewController(_:animated:) মেথড ব্যবহার করা হয়। এটি স্ট্যাকের শীর্ষে নতুন ভিউ কন্ট্রোলার যোগ করে।
let detailViewController = DetailViewController()
navigationController?.pushViewController(detailViewController, animated: true)
2. View Controller পপ করা:
বর্তমান ভিউ কন্ট্রোলার পপ করার জন্য popViewController(animated:) মেথড ব্যবহার করা হয়। এটি স্ট্যাক থেকে বর্তমান ভিউ কন্ট্রোলার সরিয়ে পূর্বের ভিউ কন্ট্রোলারে ফিরে যায়।
navigationController?.popViewController(animated: true)
UINavigationController এর কাস্টমাইজেশন:
নেভিগেশন বার কাস্টমাইজ করা:
- আপনি UINavigationBar-এর ব্যাকগ্রাউন্ড রঙ, টাইটেল স্টাইল, এবং ব্যাক বোতাম কাস্টমাইজ করতে পারেন।
নেভিগেশন বার লুকানো বা প্রদর্শন করা:
আপনি চাইলে UINavigationBar লুকাতে বা প্রদর্শন করতে পারেন:
navigationController?.setNavigationBarHidden(true, animated: true)
ব্যাক বোতাম কাস্টমাইজ করা:
আপনি কাস্টম ব্যাক বোতাম যোগ করতে পারেন:
let backButton = UIBarButtonItem(title: "Back", style: .plain, target: self, action: #selector(backTapped))
navigationItem.leftBarButtonItem = backButton
@objc func backTapped() {
navigationController?.popViewController(animated: true)
}
UINavigationController এর অন্যান্য গুরুত্বপূর্ণ ফিচার:
উইন্ডো টাইটেল সেট করা:
- আপনি প্রতিটি ভিউ কন্ট্রোলারের শিরোনাম সেট করতে পারেন, যা UINavigationBar-এ প্রদর্শিত হবে।
Navigation Bar-এর Right এবং Left Bar Buttons:
- আপনি কাস্টম বোতাম বা অ্যাকশন যোগ করতে পারেন UINavigationBar-এর ডান বা বাম পাশে।
Swipe Back Gesture:
- UINavigationController ডিফল্টভাবে Swipe to Go Back জেসচার সমর্থন করে, যা ব্যবহারকারীর অভিজ্ঞতাকে আরও ইন্টারঅ্যাকটিভ করে তোলে।
উদাহরণ:
একটি সাধারণ উদাহরণ যেখানে UINavigationController ব্যবহার করে একটি নেভিগেশন সেটআপ করা হয়:
class HomeViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white
self.title = "Home"
let nextButton = UIButton(type: .system)
nextButton.setTitle("Go to Details", for: .normal)
nextButton.addTarget(self, action: #selector(navigateToDetails), for: .touchUpInside)
nextButton.frame = CGRect(x: 100, y: 200, width: 200, height: 50)
view.addSubview(nextButton)
}
@objc func navigateToDetails() {
let detailVC = DetailViewController()
navigationController?.pushViewController(detailVC, animated: true)
}
}
class DetailViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .lightGray
self.title = "Details"
}
}
// AppDelegate বা SceneDelegate এ এটি ব্যবহার করা হবে:
let homeVC = HomeViewController()
let navController = UINavigationController(rootViewController: homeVC)
window?.rootViewController = navController
window?.makeKeyAndVisible()
সারসংক্ষেপ:
- UINavigationController হলো একটি স্ট্যাক ভিত্তিক নেভিগেশন কন্ট্রোলার যা হায়ারারক্যাল নেভিগেশন প্রদান করে।
- এটি একটি নেভিগেশন বার প্রদান করে যা শিরোনাম, ব্যাক বোতাম, এবং অন্যান্য কাস্টম আইটেম দেখায়।
- নতুন ভিউ কন্ট্রোলার পুশ এবং পপ করে অ্যাপ্লিকেশনের ভিউগুলোর মধ্যে সহজে নেভিগেশন করা যায়।
UINavigationController ব্যবহার করে আপনি জটিল নেভিগেশন কাঠামো তৈরি করতে পারেন এবং ব্যবহারকারীর জন্য একটি সিমলেস এবং ইন্টারঅ্যাক্টিভ অ্যাপ্লিকেশন প্রদান করতে পারেন।
Read more