0

Xcodeでメニューアプリを作成しました。JSON ファイルからメニューを取得しました。

"Mon": [
   {
   "Type" : "Breakfast",
   "Name":"Sweet Potato Breakfast Taquitos",
   "Price" : "OMR 1.500",
    },
    {   
   "Type" : "Dinner",
   "Name":"Fall Sausage Skillet Dinner",
   "Price" : "OMR 1.300",
   }
       ],

"Sun": [

   {
   "Type" : "Breakfast",
   "Name":"Breakfast Casserole",
   "Price" : "1500",
   },
   {
   "Type" : "Breakfast",
   "Name":"Breakfast Tart",
   "Price" : "2000", 
   },]

私のjson.hには、UITableViewで使用する次の行コードがあります。

-(void)dataRequestCompletedWithJsonObject:(id)jsonObject;

次に、UITableView でこのメソッドを呼び出します。

///Table view delegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
 MenuDetail *detail = [[MenuDetail alloc] initWithNibName:@"MenuDetail"      bundle:nil];detail.menu= [menus objectAtIndex:indexPath.row];

[self.navigationController pushViewController:detail animated:YES];
}

-(void)loadMenus
{
NSString* url = @"http://gutech.net63.net/GUeatJson";

Json *myJsonParser = [[Json alloc] init];

[myJsonParser startLoadingObjectWithUrl:url andDelegate:self];

}

-(void)dataRequestCompletedWithJsonObject:(id)jsonObject
{
NSDictionary *menuDictionary = (NSDictionary*)jsonObject; //to check

NSArray* menuArray = (NSArray*)[menuDictionary objectForKey:@"Sun"]; //will see only sun list

self.menus = [[NSMutableArray alloc] init];

for (NSDictionary* dic in menuArray) {

    Menu *menu = [[Menu alloc] init];

    menu.name = [dic objectForKey:@"Name"];//titlle
    menu.image = [dic objectForKey:@"Image"];//yello box url image
    menu.price = [dic objectForKey:@"Price"]; //yellow value

    [menus addObject:menu];
    }

    [self.tableView reloadData];
    }
    @end

実行すると、テーブル ビューに日曜日のメニューのみが表示されます。それは正常に動作します。

ここで、ユーザーが「太陽」を選択すると、日曜日のリストのみが表示されるように、セグメント コントロールまたはその他のツールを使用したいと考えています。どうやってやるの?

私の細胞。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
 {
static NSString *CellIdentifier = @"Cell";

MenuCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
    NSArray* objects = [[NSBundle mainBundle] loadNibNamed:@"MenuCell" owner:self   options:nil];

    for(id currentObject in objects)
    {
        if([currentObject isKindOfClass:[UITableViewCell class]])
        {
            cell = ( MenuCell *)currentObject;
            break;
        }
    }

}

Menu *menu = [menus objectAtIndex:indexPath.row];

[cell setDetailsWithMenu:menu];

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

// Configure the cell...

return cell;

}
4

1 に答える 1

0

.h-File に NSDictionary のインスタンスを作成し、次のように呼び出しますmenuDictionary。の次の行を変更します-(void)dataRequestCompletedWithJsonObject:(id)jsonObject

NSDictionary *menuDictionary = (NSDictionary*)jsonObject; //to check

self.menuDictionary = (NSDictionary*)jsonObject; //to check

ビューのどこかに UISegmentedControl を追加します。Value ChangedUISegmentedControlの-action をビュー コントローラーのアクションに接続します。これは次のようになります。

- (IBAction)dayChanged:(id)sender {
    UISegmentedControl *segC = (UISegmentedControl*)sender;
    NSArray* menuArray;
    switch(segC.selectedSegmentIndex){
        case 0: //Monday
            menuArray = (NSArray*)[self.menuDictionary objectForKey:@"Mon"];
            break;
        case 1: //Tuesday
            menuArray = (NSArray*)[self.menuDictionary objectForKey:@"Tue"];
            break;
        case 2: //Wednesday
            menuArray = (NSArray*)[self.menuDictionary objectForKey:@"Wed"];
            break;
        case 3: //Thursday
            menuArray = (NSArray*)[self.menuDictionary objectForKey:@"Thu"];
            break;
        case 4: //Friday 
            menuArray = (NSArray*)[self.menuDictionary objectForKey:@"Fri"];
            break;
        case 5: //Saturday
            menuArray = (NSArray*)[self.menuDictionary objectForKey:@"Sat"];
            break;
        case 6: //Sunday
            menuArray = (NSArray*)[self.menuDictionary objectForKey:@"Sun"];
            break;
        default:
            break;
        }

    self.menus = [[NSMutableArray alloc] init];

    for (NSDictionary* dic in menuArray) {

        Menu *menu = [[Menu alloc] init];
        menu.name = [dic objectForKey:@"Name"];//titlle
        menu.image = [dic objectForKey:@"Image"];//yello box url image
        menu.price = [dic objectForKey:@"Price"]; //yellow value

        [menus addObject:menu];
    }
    [self.tableView reloadData];

}

update2:

私のUItableview:

#import <UIKit/UIKit.h>
#import "myJson.h"

@interface MenuList : UITableViewController <myJsonDelegate>

@property (nonatomic, retain) NSMutableArray *menus;

@property (nonatomic, retain)NSDictionary *menuDictionary;

- (IBAction)dayChanged:(id)sender;

-(void)loadMenus;
@end
于 2013-06-06T08:46:47.570 に答える