|
|
|
iOS - Code JSON ใช้ดึงฐานข้อมูลจากเซิฟเว่อร์ แล้วโชว์เป็น List รายงาน ที่จะส่งลิ้งไปหน้ารายละเอียด |
|
|
|
|
|
|
|
Master-Detail ครับ ไม่ยาก
iOS/iPhone Storyboard and TableView Master-Detail (Objective-C,iPhone,iPad)
Apply เอาครับ ไม่ยาก แค่เพิ่มตรง Master , Detail ครับ
|
|
|
|
|
Date :
2013-07-08 11:20:38 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แก้ยังไงคับ เออเร่อ tableView
|
|
|
|
|
Date :
2013-07-10 14:44:21 |
By :
yimkrub |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตัวแปรของ TableView ชื่ออะไรครับ
|
|
|
|
|
Date :
2013-07-10 14:49:44 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IBOutlet UITableView *myTable;
|
|
|
|
|
Date :
2013-07-10 15:13:46 |
By :
yimkrub |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ยังเออเร่อ อยู่เลยคับ ลอง mytable ไปแล้วก็ติดอยู่อะ
|
|
|
|
|
Date :
2013-07-18 21:13:11 |
By :
yimkrub |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เงียบกิบ
|
|
|
|
|
Date :
2013-07-25 11:25:39 |
By :
yimkrub |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลอง post .h และ .m ดูหน่อยครับ
|
|
|
|
|
Date :
2013-07-25 11:34:06 |
By :
LindyFralin |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.h
#import <UIKit/UIKit.h>
@interface WatluangViewController : UIViewController <UITableViewDataSource,UITableViewDelegate>
{
IBOutlet UITableView *myTable;
}
@property (nonatomic, assign) NSMutableData *receivedData;
@end
|
|
|
|
|
Date :
2013-07-27 12:25:11 |
By :
yimkrub |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.m
Code (Objective-C)
#import "WatluangViewController.h"
#import "DetailWatluangViewController.h"
@interface WatluangViewController ()
@end
@implementation WatluangViewController
{
NSMutableArray *myObject;
// A dictionary object
NSDictionary *dict;
// Define keys
NSString *TempleID;
NSString *TypeID;
NSString *TempleName;
NSString *TempleDescription;
NSString *Latitude;
NSString *Longitude;
NSString *TemplePic;
UIAlertView *loading;
}
@synthesize receivedData;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// Define keys
TempleID = @"TempleID";
TypeID = @"TypeID";
TempleName = @"TempleName";
TempleDescription = @"TempleDescription";
Latitude = @"Latitude";
Longitude = @"Longitude";
TemplePic = @"TemplePic";
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
// Create array to hold dictionaries
myObject = [[NSMutableArray alloc] init];
NSURLRequest *theRequest =
[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.waiphainayutthaya.com/Watluang.php"]
cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
timeoutInterval:10.0];
NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
if (theConnection) {
self.receivedData = [[NSMutableData data] retain];
// UIAlertView *connectMessage = [[UIAlertView alloc] initWithTitle:@"NSURLConnection "
// message:@"คอนเน็กได้แล้ว" delegate: self cancelButtonTitle:@"Ok" otherButtonTitles: nil];
// [connectMessage show];
// [connectMessage release];
} else {
UIAlertView *connectFailMessage = [[UIAlertView alloc] initWithTitle:@"NSURLConnection " message:@"คอนเน็กล้มเหลว" delegate: self cancelButtonTitle:@"Ok" otherButtonTitles: nil];
[connectFailMessage show];
[connectFailMessage release];
}
// Loading Show Alert View...
loading = [[UIAlertView alloc] initWithTitle:@"" message:@"Please Wait..." delegate:nil cancelButtonTitle:nil otherButtonTitles:nil];
UIActivityIndicatorView *progress= [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(125, 50, 30, 30)];
progress.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;
[loading addSubview:progress];
[progress startAnimating];
[progress release];
[loading show];
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
[receivedData setLength:0];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
[receivedData appendData:data];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
[connection release];
[receivedData release];
// inform the user
UIAlertView *didFailWithErrorMessage = [[UIAlertView alloc] initWithTitle: @"NSURLConnection " message: @"didFailWithError" delegate: self cancelButtonTitle: @"Ok" otherButtonTitles: nil];
[didFailWithErrorMessage show];
[didFailWithErrorMessage release];
//inform the user
NSLog(@"Connection failed! Error - %@", [error localizedDescription]);
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
if(receivedData)
{
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
[loading dismissWithClickedButtonIndex:0 animated:YES];
id jsonObjects = [NSJSONSerialization JSONObjectWithData:receivedData options:NSJSONReadingMutableContainers error:nil];
// values in foreach loop
for (NSDictionary *dataDict in jsonObjects) {
NSString *strTempleID = [dataDict objectForKey:@"TempleID"];
NSString *strTypeID = [dataDict objectForKey:@"TypeID"];
NSString *strTempleName = [dataDict objectForKey:@"TempleName"];
NSString *strTempleDescription = [dataDict objectForKey:@"TempleDescription"];
NSString *strLatitude = [dataDict objectForKey:@"Latitude"];
NSString *strLongitude = [dataDict objectForKey:@"Longitude"];
NSString *strTemplePic = [dataDict objectForKey:@"TemplePic"];
dict = [NSDictionary dictionaryWithObjectsAndKeys:
strTempleID, TempleID,
strTypeID, TypeID,
strTempleName, TempleName,
strTempleDescription, TempleDescription,
strLatitude, Latitude,
strLongitude, Longitude,
strTemplePic, TemplePic,
nil];
[myObject addObject:dict];
}
[myTable reloadData];
}
// release the connection, and the data object
[connection release];
[receivedData release];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// Return the number of sections.
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
int nbCount = [myObject count];
if (nbCount == 0)
return 1;
else
return [myObject count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
int nbCount = [myObject count];
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
// Use the default cell style.
cell = [[[UITableViewCell alloc] initWithStyle : UITableViewCellStyleSubtitle
reuseIdentifier : CellIdentifier] autorelease];
}
if (nbCount ==0){
cell.textLabel.text = @"Loading Data";
}
else
{
NSDictionary *tmpDict = [myObject objectAtIndex:indexPath.row];
NSURL *url = [NSURL URLWithString:[tmpDict objectForKey:TemplePic]];
NSData *data = [NSData dataWithContentsOfURL:url];
UIImage *img = [[UIImage alloc] initWithData:data];
cell.imageView.image = img;
cell.textLabel.text = [tmpDict objectForKey:TempleName];
cell.detailTextLabel.text= [tmpDict objectForKey:TempleDescription];
/* UIAlertView *nsDict = [[UIAlertView alloc] initWithTitle:@"NSURLConnection "
message:@"nsDict" delegate: self cancelButtonTitle:@"Ok" otherButtonTitles: nil];
[nsDict show];
[nsDict release]; */
}
return cell;
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"showDetail"]) {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
NSDictionary *tmpDict = [myObject objectAtIndex:indexPath.row];
[[segue destinationViewController] setTemplePicItem:[tmpDict objectForKey:TemplePic]];
[[segue destinationViewController] setTempleNameItem:[tmpDict objectForKey:TempleName]];
[[segue destinationViewController] setTempleDescriptionItem:[tmpDict objectForKey:TempleDescription]];
}
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)dealloc {
[myTable release];
[super dealloc];
}
@end
|
|
|
|
|
Date :
2013-07-29 12:00:31 |
By :
yimkrub |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ออเร่อ ตรงบรรทัด 206 อะคับ
|
|
|
|
|
Date :
2013-07-29 16:44:10 |
By :
yimkrub |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
รันไม่ออก เลยคับ ลองแล้วลองอีก
|
|
|
|
|
Date :
2013-08-01 12:13:13 |
By :
yimkrub |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอนนี้ปัญหาคือยังไงนะครับ
1. แสดงข้อมูลจาก Json ใน table view ได้แล้วใช้เปล่า
2. เมื่อคลิกที่แต่ละ row จะให้ไปอีกหน้าหนึ่งใช้เปล่า
ติดปัญหาข้อ 2 ใช้เปล่าครับ เหมือนพี่บทความพี่วินจะมีแนะสอนอยู่นะ เดียวผมไปเปิด macbook ก่อนละกันจะได้ช่วยทดสอบให้ครับ
|
|
|
|
|
Date :
2013-08-01 22:12:25 |
By :
somparn |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
มี message Error ให้ดูครับเปล่า เหมือนว่ามันหาตัวแปรไม่เจอหรือยังไม่ได้ เชื่อมโยง object ในหน้า storyboad อ่ะครับ
|
|
|
|
|
Date :
2013-08-01 23:25:14 |
By :
somparn |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ไม่ทราบว่าตอนนี้เป็นยังไงครับ ได้หรือยังครับ
พอดีผมได้เขียนแบบไม่ใช้ storyborad ไว้ code สั่นๆครับไม่เยอะ ถ้าไม่ได้ยังไงบอกบอกนะครับจะได้ช่วยกันหาวิธีแก้ไข
|
|
|
|
|
Date :
2013-08-03 23:14:16 |
By :
somparn |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อันที่จริงในตัวอย่างมันก็มีให้ดูครับ เพียงแค่ค่อย ๆ Apply ครับ จะได้ไม่งง และ หา Error ได้ง่ายครับ
|
|
|
|
|
Date :
2013-08-03 23:16:44 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตรงนั้นลองเปลี่ยน เป็น myTable ก็เออเร่อ
|
|
|
|
|
Date :
2013-08-04 20:53:34 |
By :
yimkrub |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณครับจะลองแก้ไข้ ดู
|
|
|
|
|
Date :
2013-08-06 21:47:04 |
By :
yimkrub |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
มาช้าไปหรือป่าวผม
ชื่อตัวแปรไม่ตรงครับ
ของคุณประกาศเป็น myTable ต้อง self.myTable ครับ
|
|
|
|
|
Date :
2013-08-09 17:02:58 |
By :
ปลา |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
self.myTable ลองละคับ มัน เออเร่อ ให้ใช้ self->myTable ก็เออเร่อ อะคับ
|
|
|
|
|
Date :
2013-08-14 14:45:19 |
By :
yimkrub |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
มันใช้คำสั่ง self->myTable แบบนี้ได้หรือครับ (ผมไม่รู้เลยถามดู)
ตกลงนี้ยังไม่ได้ใช้เปล่าครับ
ค่ำนี้ผมขอยืม URL ของคุณ Yimkrub หน่อยนะครับ
|
|
|
|
|
Date :
2013-08-20 15:03:11 |
By :
somparn |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ได้ละครับบบ ขอบคุณมาก ครับ
|
|
|
|
|
Date :
2013-08-22 22:52:42 |
By :
yimkrub |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
มีอีกเรื่องที่จะถามคับ คือจะเอา ตัวแปร ลิ้งไป google map ใส่ช่อง textbox ในค้นหาสถานที่ ต้องทำยังไงครับ
|
|
|
|
|
Date :
2013-08-22 22:54:29 |
By :
yimkrub |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|