2013-05-21 24 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