2013-05-21 25 views
0

一個變量的問題,我一直在使用ODRefreshControll一個實現代碼如下。我有一個uislider在另一個視圖控制器(讓我說myViewController),這個滑塊正在改變tableview的變量(讓我說myVariable)。主要問題是如果我用滑動條從myViewController更改myVariable並刷新tableview,myVariable將變爲其初始值。我會提供我的代碼,但它有點亂碼,所以請問你從代碼中不瞭解的任何內容。 這裏是我的代碼:關於耳目一新表視圖

At myTableView.h: 

#import <UIKit/UIKit.h> 
#import <QuartzCore/QuartzCore.h> 
#import "ODRefreshControl.h" 
@interface myTableView : UITableViewController 

-(void)gettingVariableFromMyViewController; 

@end 

在myTableView.m

#import "MekanListesi.h" 
#import "AppDelegate.h" 
#import "Ayarlar.h" 

@interface myTableView() 
@property(strong)NSNumber *myVariable; 
@end 

@implementation myTableView 
@synthesize myVariable; 

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


    NSString *unsettedVariable = [(AppDelegate *)[[UIApplication sharedApplication] delegate] variableUniversal]; 

    if (!unsettedVariable) { 
     unsettedVariable= @"10000000000000000"; 

    } 


    NSNumberFormatter * NSNF= [[NSNumberFormatter alloc] init]; 
    [NSNF setNumberStyle:NSNumberFormatterDecimalStyle]; 

    self.myVariable=[DegmesinEllerimiz numberFromString:AlinanYariCap]; 

     } 

- (void)dropViewDidBeginRefreshing:(ODRefreshControl *)refreshControl 
{ 
    double delayInSeconds = 1; 
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); 
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 
     [refreshControl endRefreshing]; 
    }); 

} 

在myViewController.h

#import <UIKit/UIKit.h> 

@interface myViewController : UIViewController 
@property (weak, nonatomic) IBOutlet UISlider *mySlider; 
- (IBAction)actionMySlider:(id)sender; 
@property (weak, nonatomic) IBOutlet UILabel *myVariabelLabel; 
@end 

在myViewController.m

#import "myViewController.h" 
#import "AppDelegate.h" 
#import "myTableView.h" 
@interface myViewController() 
@end 

@implementation myViewController 
@synthesize myVariableLabel; 
@synthesize mySlider; 
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 

} 

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

    - (IBAction)actionMySlider:(id)sender{ 
    myVariableLabel.text = [NSString stringWithFormat:@"%1.1f",mySlider.value]; 
    [(AppDelegate *)[[UIApplication sharedApplication] delegate] setuniversalVariable:[NSString stringWithFormat:@"%f",mySlider.value]]; 


    myTableView *MTV=[[myTableView alloc]init]; 
    [MTV gettingVariableFromMyViewController]; 
    [MTV.tableView reloadData]; 


} 

(在的appdelegate universalVar iable設置好的作爲

@property(nonatomic,retain)NSString *universalVariable; 
@synthesize universalVariable; 

注意:我應對和Xcode中粘貼代碼,並做出一些改變與方法,類和變量名,由於這樣的事實,我的母語不是英語,所以可能會出現一些關於這些名稱的錯誤,如果您看到這些錯誤之一,請警告我。

謝謝。

+0

讓我得到這個直,你正在改變一個變量時,滑塊值改變,那麼你希望此變量在myTableView更新?如果我是正確的,然後你的'actionMySlider'方法被調用時您滑塊的值發生變化,那麼在你創建表視圖的新instace?如果一切是正確的到現在爲止,你爲什麼每次你在改變滑塊值時創建一個新的實例? – danypata

+0

沒有,我已經調用方法從tableview中當滑塊被更改。這裏是我的消息:'[MTV gettingVariableFromMyViewController];'。我的我ssue是當我拉resfresh我的變量變成它的初始變量。我正在使用github中的一個類來設置一個拉來刷新的稱爲ODRefreshControll的類。 – user2393702

+0

在這裏很難找到問題,因爲代碼並不那麼相關,當您執行pull進行刷新時會調用哪些代碼。通常在這種情況下會調用一些委託方法,也可能調用表視圖委託/數據源委託。 – danypata

回答

0

的問題是不刷新的拉動下,問題出在你的代碼的某個地方要設置了變量錯誤的值。另外你在哪裏設置了變量的新值,因爲在gettingVariableFromMyViewController你檢查你的應用程序代理的保值,所以如果您沒有設置任何地方的應用程序代理的新值,該gettingVariableFromMyViewController將返回/設置相同的值@「10000000000000000