Sponsored

আইওএস এর জন্য To Do অ্যাপ তৈরি

0
15

আমরা এর আগে আমরা আইওএস  টেবিল ভিউ নিয়ে কাজ করেছি। এবার টেবিল ভিউকে কাজে লাগিয়ে কিভাবে আমরা একটা অ্যাপ তৈরি করতে পারি, তা দেখব। তার জন্য আমরা একটা To Do অ্যাপ তৈরি করব।

 

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

 

টেক্সট ফিল্ড, টেবিল ভিউ এবং বাটন ViewControlar.swift এর সাথে যুক্ত করি। এখানে বাটন হবে Action. বাটনে যখন ক্লিক হবে, তখন টেক্সট ফিল্ড থেকে আইটেম টেবিল ভিউতে যুক্ত করবে। বাটন ViewControlar.swift এ যুক্ত করার সময় নাম দিয়েছি addTodo

আমরা একটা শূন্য অ্যারে তৈরি করে নিব। যেটাতে আমরা আমাদের টু ডু আইটেম গুলো যুক্ত করব। যেমনঃ var items = [String]()
আমরা জানি টেবিল ভিউ ব্যবহার করার জন্য আমাদের দুইটা মেথড অবশ্যই ইম্পপ্লিমেন্ট করতে হবে। সে গুলো হচ্ছেঃ


func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
     
 
}
 
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
     
 
}

 

numberOfRowsInSection হবে আমাদের অ্যারে সাইজ। আর আমরা প্রতিটা রোতে দেখাবো হচ্ছে অ্যারের মধ্যে থাকা স্ট্রিং গুলো। তার জন্যঃ

 func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
        
        return items.count
    }
    
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
        
        let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)
        
        cell.textLabel?.text = items[indexPath.row]
        
        return cell
        
    }

 

আমাদের অ্যাপ অর্ধেক তৈরি হয়ে গিয়েছে। যদিও এতটুকু আমরা টেবিল ভিউ থেকেই শিখেছি। এখন বাটনে যখন ক্লিক করবে, তখন টেক্সট ফিল্ড থেকে আইটেমটি অ্যারেতে যুক্ত করতে হবে। তার জন্য লিখবঃ


    @IBAction func addToDo(sender: AnyObject) {
        
        let newItem = textField.text
        items.append(newItem!)
        textField.resignFirstResponder()
        textField.text = ""
        tableView.reloadData()
        
    }

 

এখানে tableView.reloadData() দেওয়ার কারণ হচ্ছে আমরা যখন একটি আইটেম যুক্ত করেছি অ্যারেতে, আমাদের টেবিল ভিউ তা জানে না। এ জন্যই টেবিল ভিউ রিলোড করেছি। এতটুকু লেখার পর আমরা যদি অ্যাপ রান করি, তাহলে আমরা দেখতে পাবো আমাদের অ্যাপ কাজ করছে। আমরা আমাদের টু ডু অ্যাপে টু ডু আইটেম যুক্ত করতে পারছি। এখন পর্যন্ত লেখা সম্পুর্ণ ViewCOntrolar.swift ফাইলঃ


import UIKit

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
    
    
    @IBOutlet var tableView: UITableView!
    
    
    
    @IBOutlet var textField: UITextField!
    var items = [String]()

    @IBAction func addToDo(sender: AnyObject) {
        
        let newItem = textField.text
        items.append(newItem!)
        textField.resignFirstResponder()
        textField.text = ""
        tableView.reloadData()
        
    }
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
       
    }

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
        
        return items.count
    }
    
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
        
        let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)
        
        cell.textLabel?.text = items[indexPath.row]
        
        return cell
        
    }
    
}


আমারা আরেকটু কাজ করতে পারি। যেমন আমরা যদি টু ডু এর কোন কাজ করে ফেলি, তাহলে তাতে টিক চিহ্ন দিতে পারি। তার জন্য লিখব এভাবেঃ

    // select and mark an item
    
    func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {
        let selectedRow = tableView.cellForRowAtIndexPath(indexPath)!
        if selectedRow.accessoryType == UITableViewCellAccessoryType.None {
            selectedRow.accessoryType = UITableViewCellAccessoryType.Checkmark
            selectedRow.tintColor = UIColor.greenColor()
            
        }else{
            selectedRow.accessoryType = UITableViewCellAccessoryType.None
        }
        
    }

আমরা যদি ভুলে কোন আইটেম যুক্ত করে ফেলি, তাহলে তা রিমুভ করে দিব। তার জন্য লিখব এভাবেঃ

 // delete an item
    
    func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
        let deletedRow:UITableViewCell = tableView.cellForRowAtIndexPath(indexPath)!
        
        if(editingStyle == UITableViewCellEditingStyle.Delete){
            items.removeAtIndex(indexPath.row)
            tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
            deletedRow.accessoryType = UITableViewCellAccessoryType.None
        
        
        }// end if
        
    }// end delete an item method

অ্যাপটা রান করলে দেখতে পারব আমরা মোটামুটি পূর্নাঙ্গ একটা টু ডু অ্যাপ তৈরি হয়ে গিয়েছে। কত অল্প কিছু কোড লিখতে হয়েছে আমাদের। সম্পুর্ণ ViewControlar.swift



import UIKit

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
    
    
    @IBOutlet var tableView: UITableView!
    
    
    
    @IBOutlet var textField: UITextField!
    var items = [String]()

    @IBAction func addToDo(sender: AnyObject) {
        
        let newItem = textField.text
        items.append(newItem!)
        textField.resignFirstResponder()
        textField.text = ""
        tableView.reloadData()
        
    }
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
       
    }

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
        
        return items.count
    }
    
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
        
        let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)
        
        cell.textLabel?.text = items[indexPath.row]
        
        return cell
        
    }
    
    
    // select an item
    
    func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {
        let selectedRow = tableView.cellForRowAtIndexPath(indexPath)!
        if selectedRow.accessoryType == UITableViewCellAccessoryType.None {
            selectedRow.accessoryType = UITableViewCellAccessoryType.Checkmark
            selectedRow.tintColor = UIColor.greenColor()
            
        }else{
            selectedRow.accessoryType = UITableViewCellAccessoryType.None
        }
        
    }
    
    
    // delete an item
    
    func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
        let deletedRow:UITableViewCell = tableView.cellForRowAtIndexPath(indexPath)!
        
        if(editingStyle == UITableViewCellEditingStyle.Delete){
            items.removeAtIndex(indexPath.row)
            tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
            deletedRow.accessoryType = UITableViewCellAccessoryType.None
        
        
        }// end if
        
    }// end delete an item method
    
}


Search
Categories
Read More
Tech
লারাভেল কন্ট্রোলার
লারাভেল নিয়ে এর আগের লেখা গুলোঃ উইন্ডোজে লারাভেল / Laravel ইন্সটল বা প্রজেক্ট তৈরি লারাভেল ভিউ...
By Nettumi 2026-09-30 18:41:42 0 6
Job
ইস্টার্ন ব্যাংক লিমিটেড পিএলসি নিয়োগ বিজ্ঞপ্তি ২০২৬ Eastern Bank PLC Job Circular 2026
5/5 - (3 votes)☰ মোট পদের ক্যাটাগরি০১👥 মোট শূন্যপদনিদিষ্ট নয় আবেদনের শেষ দিন ২ জুলাই ২০২৬ ইং ❌...
By Nettumi 2026-09-24 18:43:14 0 34
Status
দুঃখের ফেসবুক স্ট্যাটাস: চাপা কষ্টের ৫০+ স্ট্যাটাস [২০২৬] - উক্তিবাড়ি
সূচিপত্র (Table of Contents) লুকান
By Nettumi 2026-10-03 03:31:32 0 0
Tech
Google Drive ব্যবহারের সম্পূর্ণ গাইড : ফাইল সংরক্ষণ, Backup ও Security Tips - Tech Tips Desk – বাংলা প্রযুক্তি সংবাদ, মোবাইল রিভিউ ও টিপস
বর্তমান সময়ে ছবি, ভিডিও, অফিসের ডকুমেন্ট কিংবা ব্যক্তিগত ফাইল নিরাপদে সংরক্ষণ করা আগের যেকোনো...
By Nettumi 2026-09-30 18:35:53 0 16
Tech
এসএসসি রেজাল্ট ২০২৩ জানার উপায় - SSC Result 2023
এসএসসি পরীক্ষা ২০২৩ এর ফলাফল প্রকাশ হচ্ছে ২৮ জুলাই ২০২৩ শুক্রবার। এই পোস্টে থাকা নিয়ম অনুসরণ করে...
By Nettumi 2026-09-25 10:18:36 0 26
‎ ‎ ‎
Nettumi https://nettumi.com