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





Clound SSD Virtual Server

iOS/iPhone Storyboard and Passing Data Between View (Objective-C,iPhone)

iOS/iPhone Storyboard and Passing Data Between View (Objective-C,iPhone,iPad) บทความนี้เป็นการประยุกต์หลาย ๆ อย่างเข้าด้วยกัน เช่น Storyboard , Table View , Navigation Controller , Action Segue แบบ Push และการรับส่ง Data ระหว่าง View โดยในตัวอย่างนี้จะออกแบบ View ขึ้นมา 2 ตัว ซึ่งจะอยู่บน Storyboard ตัวเดียวกัน โดยใน View แนกถูกควบคุมการทำงานด้วย Navigation Controller เพื่อส่งค่าจาก Table View ใน View แรกไปยัง View ที่สอง และ View ที่สอง ทำการแสดงค่าที่ได้บน Label และสามารถทำการ Back กลับมายัง View แรก โดยใช้ Action Segue แบบ Push ซึ่งถือได้ว่าเป็นการทบทวนบทความก่อนหน้านี้หลาย ๆ บทความด้วยการนำมารวมกัน

iOS/iPhone Storyboard and Passing Data Between View

iOS/iPhone Storyboard and Passing Data Between View


สำหรับบทความนี้จะเป็นการนำหลาย ๆ บทความที่ผ่านมารวมกันไว้ในตัวอย่างเดียว เพราะฉะนั้นเพื่อความเข้าใจ แนะนำให้อ่านบทความเหล่านี้ซะก่อน แต่ถ้ามีพื้นฐานอยู่แล้วก็สามารถอ่านบทความนี้ต่อไปได้เลย



บทความนี้อาจจะยาวนิดหนึ่ง แต่เพื่อความเข้าใจในการอ่านแล้วเข้าใจ

iOS/iPhone Storyboard and Passing Data Between View

เริ่มต้นด้วยการสร้าง Project แบบ Single View Application

iOS/iPhone Storyboard and Passing Data Between View

เลือกแบบ Use Storyboard

iOS/iPhone Storyboard and Passing Data Between View

จะเห็นว่ามี Storyboard โชว์ขึ้นมา








iOS/iPhone Storyboard and Passing Data Between View

เพื่อการไม่สับสนขอลบเจ้า 2 ตัวนี้ออก

iOS/iPhone Storyboard and Passing Data Between View

กลับมาที่ Storyboard จะเห็นว่าตอนนี้มี View ที่เป็นค่า Default มาให้ 1 View ให้เราทำการลบ View นี้ทิ้งไปได้เลย (ลบ View น่ะครับ ไม่ใช่ลบ Storyboard)

iOS/iPhone Storyboard and Passing Data Between View

จากนั้นให้มาที่รายการ Object ให้เลือก Table View Controller ลากไปไว้ใน Storyboard

iOS/iPhone Storyboard and Passing Data Between View

คลิกที่ View แรก แล้วไปที่ Editor -> Embed In -> Navigation Controller

iOS/iPhone Storyboard and Passing Data Between View

ตอนนี้ View แรก จะมี Navigation Controller เรียบร้อยแล้ว

iOS/iPhone Storyboard and Passing Data Between View

ให้ทำการ New Files ขึ้นมาใหม่

iOS/iPhone Storyboard and Passing Data Between View

คลิกเลือก Objective-C Class

iOS/iPhone Storyboard and Passing Data Between View

ตัวนี้อย่าลืมเลือก Subclass เป็น UITableViewController

iOS/iPhone Storyboard and Passing Data Between View

ได้ไฟล์เรียบร้อย

iOS/iPhone Storyboard and Passing Data Between View

อย่าลืม Map View กับ Class ด้วย

iOS/iPhone Storyboard and Passing Data Between View

เปลี่ยนชื่อ Title ให้กับ View ด้วยครับ โดยตั้งเป็น Master Page

iOS/iPhone Storyboard and Passing Data Between View

อันนี้สำคัญมาก อย่าลืมคลิกตรง Identifier เป็น Cell และก็กำหนดคุณสมบัติเหมือนกับในรูปภาพ

iOS/iPhone Storyboard and Passing Data Between View

จากนั้นให้สร้าง View ขึ้นมาใหม่ ซึ่งต่อไปนี้เราเรียกมันว่า View 2

iOS/iPhone Storyboard and Passing Data Between View

ลาก Label มาวางไว้ ตัวนี้เราจะไว้สำหรับแสดงค่าจาก View 1

iOS/iPhone Storyboard and Passing Data Between View

จากนั้นกลับไปที่ View 1 ให้คลิกที่ Table Cell กด Control บน Keyboard แล้วลากมาวางไว้ใน View 2

iOS/iPhone Storyboard and Passing Data Between View

เลือก Action Segue แบบ push (แบบ ดัน หรือ ผลัก โดยเราจะมีปุ่ม Back กลับมาอัตโนมัติ)

iOS/iPhone Storyboard and Passing Data Between View

หลังจากนั้น View 2 ก็จะกลายร่างเป็น View ที่มี Navigation Controller ในทันที ใส่ Title Bar ว่า Detail Page

iOS/iPhone Storyboard and Passing Data Between View

ขั้นตอนถัดไปเราจะสร้าง Class ให้กับ View 2 ด้วยการ New Files ขั้นมาใหม่

iOS/iPhone Storyboard and Passing Data Between View

เลือก Objective-C Class

iOS/iPhone Storyboard and Passing Data Between View

ขั้นตอนนี้ให้เลือก Subclass เป็น UIViewController

iOS/iPhone Storyboard and Passing Data Between View

ได้ไฟล์ Class ขึ้นมาเรียบร้อย

iOS/iPhone Storyboard and Passing Data Between View

ทำการ Map Class ใหม่กับ View 2 ให้เรียบร้อย

iOS/iPhone Storyboard and Passing Data Between View

ใน View 2 ก็อย่าลืมเชื่อม IBOutlet และ IBAction ให้เรียบร้อยด้วยครับ

iOS/iPhone Storyboard and Passing Data Between View

เป็นหน้าจอ Storyboard ที่ได้ ที่เหลือก็เป็นขั้นตอนการเขียนคำสั่งด้วยภาษา Objective-C ตาม ไฟล์ทั้งหมด 4 ไฟล์นี้

MasterViewController.h
//
//  MasterViewController.h
//
//  Created by Weerachai on 10/28/55 BE.
//  Copyright (c) 2555 Weerachai. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface MasterViewController : UITableViewController

@end


MasterViewController.m
//
//  MasterViewController.m
//
//  Created by Weerachai on 10/28/55 BE.
//  Copyright (c) 2555 Weerachai. All rights reserved.
//

#import "MasterViewController.h"

#import "DetailViewController.h"

@interface MasterViewController ()

@end

@implementation MasterViewController
{
    NSMutableArray *myObject;
}


- (id)initWithStyle:(UITableViewStyle)style
{
    self = [super initWithStyle:style];
    if (self) {
        // Custom initialization
    }
    return self;
}


- (void)viewDidLoad
{
    [super viewDidLoad];
    
    myObject = [[NSMutableArray alloc] init];
    int i = 0;
    for(i = 0 ;i <= 10 ; i ++)
    {
        NSString* strItem = [NSString stringWithFormat:@"ThaiCreate.Com %d", i];
        [myObject addObject:strItem];
    }
    
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    // Return the number of sections.
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Return the number of rows in the section.
    return myObject.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    static NSString *CellIdentifier = @"Cell";
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    }
    
    
    NSString *object = myObject[indexPath.row];
    cell.textLabel.text = [object description];
    return cell;
    
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    
     if ([[segue identifier] isEqualToString:@"showDetail"]) {
                  
         NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
         NSString *object = myObject[indexPath.row];
      
         [[segue destinationViewController] setDetailItem:object];
     }
     
}

@end









DetailViewController.h
//
//  DetailViewController.h
//
//  Created by Weerachai on 10/28/55 BE.
//  Copyright (c) 2555 Weerachai. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface DetailViewController : UIViewController
{
    IBOutlet UILabel *lblResult;
}

@property (strong, nonatomic) id detailItem;

@end


DetailViewController.m
//
//  DetailViewController.m
//
//  Created by Weerachai on 10/28/55 BE.
//  Copyright (c) 2555 Weerachai. All rights reserved.
//

#import "DetailViewController.h"

@interface DetailViewController ()

@end

@implementation DetailViewController

@synthesize detailItem;

- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view.
    
    lblResult.text = [detailItem description];
}

- (void)setDetailItem:(id)newDetailItem
{
    detailItem = newDetailItem;
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void)dealloc {
    [lblResult release];
    [super dealloc];
}
@end

สำหรับ Code ของ Objective-C ก็ไม่มีอะไรซับซ้อน สามารถอ่านและเข้าใจได้โดยไม่ยาก

Screenshot ทดสอบการทำงานบน iOS iPhone Simulator

iOS/iPhone Storyboard and Passing Data Between View

แสดงข้อมูลบน Table View



iOS/iPhone Storyboard and Passing Data Between View

แสดงค่าที่ส่งมาจาก View 1 และมีป่ม Back สามารถย้อนกลับไปได้ ซึ่งตัวนี้ได้จาก Action Segue แบบ push

   
Share


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


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


   


Bookmark.   
       
  By : ThaiCreate.Com Team (บทความเป็นลิขสิทธิ์ของเว็บไทยครีเอทห้ามนำเผยแพร่ ณ เว็บไซต์อื่น ๆ)
  Score Rating :  
  Create/Update Date : 2012-10-29 15:21:08 / 2017-03-26 09:55:26
  Download : Download  iOS/iPhone Storyboard and Passing Data Between View (Objective-C,iPhone)
 Sponsored Links / Related

 
iOS/iPhone Storyboard and View , Multiple View (Objective-C, iPhone, iPad)
Rating :

 
iOS/iPhone Storyboard and Custom Class in View (Objective-C, iPhone, iPad)
Rating :

 
iOS/iPhone Storyboard Action Segue and View (Objective-C,iPhone,iPad)
Rating :

 
iOS/iPhone Storyboard and TableView Master-Detail (Objective-C,iPhone,iPad)
Rating :

 
iOS/iPhone Table View Controller and Storyboard - UITableViewController (Objective-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
ปรับแต่งเว็บให้โหลดเร็ว


สุดยอด Source Code V2.0
 

แจ้งชำระเงิน/โอนเงิน
 

Hit Link
   







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