2014-12-26 21 views
0

我是iOS中的newBie Development.i爲我的應用程序創建分段控件並且我想爲每個ScrollView解析不同的WebService數據爲此我使用HMSegmented Controll並設置scrollview對於它像作爲JSON數據沒有解析所有視圖

這裏我主視圖控制器包含代碼形象地比喻爲

ViewController *latest=[[ViewController alloc]initWithNibName:@"ViewController" bundle:nil]; 
    [latest.view setFrame:CGRectMake(0, 0, self.view.frame.size.width,self.view.frame.size.height)]; 
    latest.index=0; 
    [self addChildViewController:latest]; 
    [self.scrollView addSubview:latest.view]; 

    ViewController *latest2=[[ViewController alloc]initWithNibName:@"NavuViewController" bundle:nil]; 
    [latest2.view setFrame:CGRectMake(320, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
    latest2.index=1; 
    [self addChildViewController:latest2]; 
    [self.scrollView addSubview:latest2.view]; 

    ViewController * latest3 =[[ViewController alloc]initWithNibName:@"NavuViewController" bundle:nil]; 
    [latest3.view setFrame:CGRectMake(640, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
    latest3.index=2; 
    [self addChildViewController: latest3]; 
    [self.scrollView addSubview: latest3.view]; 

然後,它包含不同的景觀,因爲我想 在我看來,或者Controller.h文件,我定義索引int變量

@property (assign) int index; 

,現在我想獲取數據基於索引的,我寫我的ViewController.m文件viewDidLoad方法代碼我寫等作爲

-(void)view 
{ 
[super viewWillAppear:animated]; 
[self.navuTable deselectRowAtIndexPath:self.navuTable.indexPathForSelectedRow animated:YES]; 
NSURL *url; 
switch (self.index) 
{ 
    case 0: 
     url=[NSURL URLWithString:[NSString stringWithFormat:@"http://www.janvajevu.com/webservice/latest_post.php?page=%d",pageNum]]; 
     break; 
    case 1: 
    { 
     NSString *urlString = @"http://www.janvajevu.com/webservice/categorylist.php?category=%E0%AA%9C%E0%AA%BE%E0%AA%A3%E0%AA%B5%E0%AA%BE%20%E0%AA%9C%E0%AB%87%E0%AA%B5%E0%AB%81%E0%AA%82&page="; 

     url = [NSURL URLWithString:[NSString stringWithFormat:@"%@%d",urlString,pageNum]]; 
    } 
     break; 
    case 2: 

    { 
     NSString *urlString = @"http://www.janvajevu.com/webservice/categorylist.php?category=%E0%AA%9F%E0%AB%87%E0%AA%B2%E0%AB%87%E0%AA%A8%E0%AB%8D%E0%AA%9F&page="; 

     url= [NSURL URLWithString:[NSString stringWithFormat:@"%@%d",urlString,pageNum]]; 
    } 
     break; 
    default: 
     break; 
} 
dispatch_async(kBgQueue, ^{ 
    data = [NSData dataWithContentsOfURL: url]; 
    [self performSelectorOnMainThread:@selector(fetchedData:) withObject:data waitUntilDone:YES]; 
}); 

-(void)fetchedData:(NSData *)responsedata 
{ 
UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 
spinner.frame = CGRectMake(0, 0, 320, 44); 
self.navuTable.tableFooterView = spinner; 
if (responsedata.length > 0) 
{ 
    NSError* error; 
    self.json= [NSJSONSerialization JSONObjectWithData:responsedata options:kNilOptions error:&error]; 
    if ([[_json objectForKey:@"data"] isKindOfClass:[NSArray class]]) 
    { 
     NSArray *arr = (NSArray *)[_json objectForKey:@"data"]; 
     [self.navuArray addObjectsFromArray:arr]; 
     [self.navuTable reloadData]; 
     [spinner startAnimating]; 
     NSLog(@"Array %@",self.navuArray); 
    } 
} 

然後是加載相同數據的不同代碼的Webservice所有的索引意味着只從第一個索引Url獲取數據它是電機負載數據對於不同索引的不同分段控制,請給我解決方案。 在此先感謝。

回答

0

索引總是停留在0的值,它不是第一項,但它是初始化時的默認值。

嘗試添加Segmentdelegate,看文檔和落實ValueChangedDelegate中,你可以通過yourSegment.selectedIndex獲得所選指標的值,,這將是您應使用來獲取不同的URL值。

否則你的代碼的結構是這麼一週,你應該使用storyboard而不是nibs,也許用乾淨的代碼做一個Model類然後連接到你的UI代碼。 (MVC模式)

希望有幫助,如果您想獲得更多幫助,請發佈更多數據。祝你好運