Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > Mobile > [iOS/iPhone] Tutorials - สอนเขียน iPhone App ฟรี เขียน iPad App เรียน iPhone เขียนโปรแกรม iPhone > ตอนที่ 7 : Xamarin.iOS กับ Visual Studio สร้าง Action Segue ส่งค่า Parameters ข้าม View (C#)



Clound SSD Virtual Server

ตอนที่ 7 : Xamarin.iOS กับ Visual Studio สร้าง Action Segue ส่งค่า Parameters ข้าม View (C#)

ตอนที่ 7 : Xamarin.iOS กับ Visual Studio สร้าง Action Segue ส่งค่า Parameters ข้าม View (C#) ในการเขียน App บน iOS ที่มีจำนวนหน้าของ App หลาย ๆ หน้า ในที่นี้เราจะเรียกว่า View หรือ View Controller ซึ่ง View นี้เป็นส่วนประกอบสำคัญที่ควบคุมการแสดงผลของ App และแน่นอนว่า App ทั่ว ๆ ไปจะต้องมีจำนวนหน้ามากกว่า 1 หน้าแน่นอน และในแต่ล่ะหน้าเราอาจจะเห้นว่ามีการเชื่อมโยงข้อมูลระหว่างกัน ผ่านการ คลิกที่ Button หรือ Slide ในรูปแบบต่าง ๆ และเหตุการณ์ที่เกิดขึ้นจะมีการส่งค่าไปยังในหน้าอื่น ๆ อาจจะอยู่ในรูปแบบของ Master-Detail โดยรูปแบบการส่งค่านั้นมีหลากหลายรูปแบบ แต่ในบทความนี้จะแนะนำวิธีการส่งค่าแบบง่าย ๆ ผ่าน Action ของ Segue ที่อยู่บน Storyboard

บทความใน ตอนที่ 5 เกี่ยวกับการสร้าง View ที่มีมากกว่าหนึ่ง View บน Soryboard การสร้าง Custom Class เพื่อ Mapping กับ View ที่อยู่ใน Storyboard และ Class ที่สร้างขึ้น รวมทั้งการสร้าง Action Segue เพื่อเชื่อมโยง View ซึ่งจะนำมาประยุคต่อให้ในบทความนี้ ฉะนั้นสมาชิกที่เพิ่งอ่านบทความนี้เป็นหัวข้อแรก แนะนำให้กลับไปอ่านในตอนที่ 5

Xamarin.iOS Visual Studio Segue

Xamarin.iOS Segue and Passing Parameters Between View


ในการส่งค่า Parameters จะหว่าง View บน Xamarin.iOS ด้วยภาษา C# จะใช้หลักการเดียวกับการเขียน Windows Form App คือ Class ปลายทางที่จะรับค่านั้น จะต้องสร้าง Property ไว้สำหรับการรับค่า ซึ่ง Property นั้นสามารถกำหนด Data Type ได้ตามชนิดของข้อมูลที่ต้องการ เช่น String , Integer ,, Array , Object หรืออื่น ๆ และเมื่อมี Property แล้วฝั่งที่ส่งข้อมูลก็จะทำการอ้างถึง Class ปลายทาง พร้อมกับการส่งข้อมูล Parameters ในรูปแบบ Argument ซึ่งจะมีได้หลาย ๆ ตัว ไปกับ Class นั้น ๆ

รูปแบบการรับส่ง Parameters ระว่าง View ผ่าน Action ของ Segue

Send Parameters
        public override void PrepareForSegue(UIStoryboardSegue segue, NSObject sender)
        {
            ((DetailViewController)segue.DestinationViewController).SetDetailItem("String Parameters");
        }
SetDetailItem คือ Property ของ Class ที่ที่จะส่งไป สามารถมีได้หลาย Argument

Receive Parameters
        object detailItem;

        public void SetDetailItem(object newDetailItem)
        {
            if (detailItem != newDetailItem)
            {
                detailItem = newDetailItem;
            }
        }

        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            this.lblResult.Text = detailItem.ToString();

        }









กลับมายัง Xamarin.iOS โปคเจคบน Visual Studio

Xamarin.iOS Visual Studio Segue

ออกแบบหน้าจอ UI ดังรูป ซึ่งอยู่บน Storyboard ประกอบด้วย View จำนวน 2 View แต่ล่ะ View เชื่อมกับ Class
  • View แรกทำงานคู่กับ Class ของ RootViewController
  • View สองทำงานคู่กับ Class ของ DetailViewController


อ่านเพิ่มเติม : ตอนที่ 5 : โครงสร้าง Xamarin.iOS บน Visual Studio สร้าง View การเชื่อมโยง View ด้วย C#


Xamarin.iOS Visual Studio Segue

ทำการเชื่อม Segue ของ View แรกด้วยการคลิกที่ Button จากนั้นกดปุ่ม Ctrl บน Keyboard แล้วลากไปวางไว้บน View ที่สอง และเลือก Action แบบ Modal

Xamarin.iOS Visual Studio Segue

ในกรณีที่ต้องการใส่ค่า Effect ให้กับ Segue สามารถกำหนดที่ Properties -> Widget ดังรูป

จากนั้นให้สร้าง Event ดังนี้

Class ของ View แรก สร้าง Method ชื่อว่า PrepareForSegue ซึ่งเป็นการ override method ของการคลิกที่ Segue พร้อมกับส่งค่า Parameters ไปยัง View สอง
        public override void PrepareForSegue(UIStoryboardSegue segue, NSObject sender)
        {
            ((DetailViewController)segue.DestinationViewController).SetDetailItem(this.txtName.Text);
        }

Class ของ View สอง สร้าง Property สำหรับการ รับค่า พร้อมกับ Get ค่าเพื่อเรียกค่า Parameters
        object detailItem;

        public void SetDetailItem(object newDetailItem)
        {
            if (detailItem != newDetailItem)
            {
                detailItem = newDetailItem;
            }
        }


ทดสอบการทำงาน

Xamarin.iOS Visual Studio Segue

ทดสอบการ Input ข้อมูลใน View แรก และคลิกส่งไปยัง View ที่สอง

Xamarin.iOS Visual Studio Segue

ค่า Parameters จะถูกส่งมายัง View สอง และแสดงผลตามที่ต้องการ

Code ทั้งหมด

RootViewController.cs
using System;
using System.Drawing;

using Foundation;
using UIKit;

namespace iOSApp
{
    public partial class RootViewController : UIViewController
    {
        public RootViewController(IntPtr handle)
            : base(handle)
        {
        }

        public override void DidReceiveMemoryWarning()
        {
            // Releases the view if it doesn't have a superview.
            base.DidReceiveMemoryWarning();

            // Release any cached data, images, etc that aren't in use.
        }

        #region View lifecycle

        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            // Perform any additional setup after loading the view, typically from a nib.
        }

        public override void ViewWillAppear(bool animated)
        {
            base.ViewWillAppear(animated);
        }

        public override void ViewDidAppear(bool animated)
        {
            base.ViewDidAppear(animated);
        }

        public override void ViewWillDisappear(bool animated)
        {
            base.ViewWillDisappear(animated);
        }

        public override void ViewDidDisappear(bool animated)
        {
            base.ViewDidDisappear(animated);
        }

        #endregion

        public override void PrepareForSegue(UIStoryboardSegue segue, NSObject sender)
        {
            ((DetailViewController)segue.DestinationViewController).SetDetailItem(this.txtName.Text);
        }

    }
}









DetailViewController.cs
using System;
using System.Drawing;

using Foundation;
using UIKit;

namespace iOSApp
{
    public partial class DetailViewController : UIViewController
    {
        object detailItem;

        public void SetDetailItem(object newDetailItem)
        {
            if (detailItem != newDetailItem)
            {
                detailItem = newDetailItem;
            }
        }

        public DetailViewController(IntPtr handle)
            : base(handle)
        {
        }

        public override void DidReceiveMemoryWarning()
        {
            // Releases the view if it doesn't have a superview.
            base.DidReceiveMemoryWarning();

            // Release any cached data, images, etc that aren't in use.
        }

        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            this.lblResult.Text = detailItem.ToString();

            // Perform any additional setup after loading the view, typically from a nib.
        }
    }
}


   
Share


ช่วยกันสนับสนุนรักษาเว็บไซต์ความรู้แห่งนี้ไว้ด้วยการสนับสนุน Source Code 2.0 ของทีมงานไทยครีเอท


ลองใช้ค้นหาข้อมูล


   


Bookmark.   
       
  By : ThaiCreate.Com Team (บทความเป็นลิขสิทธิ์ของเว็บไทยครีเอทห้ามนำเผยแพร่ ณ เว็บไซต์อื่น ๆ)
  Score Rating :  
  Create/Update Date : 2014-10-22 21:37:09 / 2017-03-26 08:40:13
  Download : No files
 Sponsored Links / Related

 
ตอนที่ 1 : รู้จัก Xamarin สำหรับ iOS ติดตั้ง Xamarin เขียน iOS Apps ด้วย C# (.Net Framework)
Rating :

 
ตอนที่ 2 : รู้จัก Xamarin Studio IDE บน Mac OS การเขียน iOS บน Xamarin ด้วยภาษา C#
Rating :

 
ตอนที่ 3 : Mac Build Host เตรียมความพร้อม iOS Simulator สำหรับ Visual Studio (C#)
Rating :

 
ตอนที่ 4 : พื้นฐาน Xamarin.iOS บน Visual Studio การสร้าง Run/Project ของ iOS ด้วย C#
Rating :

 
ตอนที่ 5 : โครงสร้าง Xamarin.iOS บน Visual Studio สร้าง View การเชื่อมโยง View ด้วย C#
Rating :

 
ตอนที่ 6 : การสร้าง Event Handler และ UIAlertView ของ Xamarin.iOS บน Visual Studio C#
Rating :


ThaiCreate.Com Forum


Comunity Forum Free Web Script
Jobs Freelance Free Uploads
Free Web Hosting Free Tools

สอน PHP ผ่าน Youtube ฟรี
สอน Android การเขียนโปรแกรม Android
สอน Windows Phone การเขียนโปรแกรม Windows Phone 7 และ 8
สอน iOS การเขียนโปรแกรม iPhone, iPad
สอน Java การเขียนโปรแกรม ภาษา Java
สอน Java GUI การเขียนโปรแกรม ภาษา Java GUI
สอน JSP การเขียนโปรแกรม ภาษา Java
สอน jQuery การเขียนโปรแกรม ภาษา jQuery
สอน .Net การเขียนโปรแกรม ภาษา .Net
Free Tutorial
สอน Google Maps Api
สอน Windows Service
สอน Entity Framework
สอน Android
สอน Java เขียน Java
Java GUI Swing
สอน JSP (Web App)
iOS (iPhone,iPad)
Windows Phone
Windows Azure
Windows Store
Laravel Framework
Yii PHP Framework
สอน jQuery
สอน jQuery กับ Ajax
สอน PHP OOP (Vdo)
Ajax Tutorials
SQL Tutorials
สอน SQL (Part 2)
JavaScript Tutorial
Javascript Tips
VBScript Tutorial
VBScript Validation
Microsoft Access
MySQL Tutorials
-- Stored Procedure
MariaDB Database
SQL Server Tutorial
SQL Server 2005
SQL Server 2008
SQL Server 2012
-- Stored Procedure
Oracle Database
-- Stored Procedure
SVN (Subversion)
แนวทางการทำ SEO
ปรับแต่งเว็บให้โหลดเร็ว


Hit Link
   







Load balance : Server 05
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่