2013-02-27 8 views
-2

我面对我的应用程序的问题问题解释如下,当我们在iOS中推控制器时,如何访问Last view controller的变量?

#import <UIKit/UIKit.h> 
@interface CLASS_A : UIViewController { 
    UIButton *Btn_Push;  
    UILabel *lbl_no; 
} 
- (IBAction)Btn_PushPressed:(id)sender; 
@property (nonatomic, retain) UILabel *lbl_no; 
@end 

#import "CLASS_A.h" 
@implementation CLASS_A 
@synthesize pdfFilePath; 

- (IBAction)Btn_PushPressed:(id)sender 
{ 
    CLASS_B *obj_CLASS_B= [[CLASS_B alloc] initWithNibName:@"RTC_HomeVC" bundle:nil]; 
    [self.navigationController pushViewController:obj_CLASS_B animated:TRUE]; 
} 
@end 

#import <UIKit/UIKit.h> 
@interface CLASS_B : UIViewController { 
    UIButton *Btn_Pop; 
} 
- (IBAction)Btn_PopPressed:(id)sender; 
@end 

#import "CLASS_B.h" 
@implementation CLASS_B 
- (void)viewDidLoad 
{ 
} 
- (IBAction)Btn_PopPressed:(id)sender 
{ 

    [self.navigationController popToRootViewControllerAnimated:YES]; 
} 
@end 

这是我的两个班。 点击Btn_Push CLASS_A按CLASS_B。 然后点击CLASS_B CLASS_B的Btn_Pop弹出CLASS_A。

现在每当我压入和弹出lbl_no由1

例递增时间:

  • CLASS_A推CLASS_B lbl_no.text = @ “0”;

  • CLASS_B pop CLASS_A lbl_no.text = @“1”;

  • CLASS_A push CLASS_B lbl_no.text = @“1”;

  • CLASS_B pop CLASS_A lbl_no.text = @“2”;

  • CLASS_A push CLASS_B lbl_no.text = @“2”;

  • CLASS_B pop CLASS_A lbl_no.text = @“3”;

  • CLASS_A push CLASS_B lbl_no.text = @“3”;

  • CLASS_B pop CLASS_A lbl_no.text = @“4”;

所以我的问题是

1.I不想在CLASS_A执行任何计算操作。您可以在CLASS_B中执行任何计算操作,这是必须的。也不想使用AppDelegate类,Singletone类,NSNotification和NSUserDefaults。并且想要如上所述更改lbl_no的文本。

那么我该如何做到这一点?任何人都可以帮忙。

谢谢。

+0

嗨,如果你是下来了投票,那么请给出一个具体什么原因你失望投票。 – Nikh1414 2013-02-27 12:09:25

回答

2

尝试类似的东西:

A类

// CLASS_A.h 
#import <UIKit/UIKit.h> 
@interface CLASS_A : UIViewController { 
    UIButton *Btn_Push;  
    UILabel *lbl_no; 
} 
- (IBAction)Btn_PushPressed:(id)sender; 
@property (nonatomic, retain) UILabel *lbl_no; 
@end 

// CLASS_A.m 
#import "CLASS_A.h" 
#import "CLASS_B.h" 
@implementation CLASS_A 
@synthesize pdfFilePath; 

- (IBAction)Btn_PushPressed:(id)sender 
{ 
    CLASS_B *obj_CLASS_B= [[CLASS_B alloc] initWithNibName:@"RTC_HomeVC" bundle:nil]; 
    obj_CLASS_B.delegate = self; 
    [self.navigationController pushViewController:obj_CLASS_B animated:TRUE]; 
} 
@end 

B类

// CLASS_B.h 
#import <UIKit/UIKit.h> 
@class CLASS_A; 
@interface CLASS_B : UIViewController { 
    UIButton *Btn_Pop; 
} 
@property (weak, nonatomic) CLASS_A *delegate; 
- (IBAction)Btn_PopPressed:(id)sender; 
@end 

// CLASS_B.m 
#import "CLASS_B.h" 
#import "CLASS_A.h" 
@implementation CLASS_B 
- (void)viewDidLoad 
{ 
} 
- (IBAction)Btn_PopPressed:(id)sender 
{ 
    self.delegate.lbl_no.text = [NSString stringWithFormat:@"%d", ([self.delegate.lbl_no.text integerValue] + 1)]; 
    [self.navigationController popToRootViewControllerAnimated:YES]; 
} 
@end 
+0

对于推我导入CLASS_A中的CLASS_B和作为你的建议,我需要导入CLASS_B中的CLASS_A CLASS_A CLASS_A CLASS_A。所以它给出了一个交叉引用的错误。那么你能否提出这种方法的其他解决方案。 – Nikh1414 2013-02-27 10:28:18

+0

它给出了一个错误“在CLASS_A类型的对象上找不到属性lbl_no”。 – Nikh1414 2013-02-27 11:00:08

+0

它提供了一个错误“在CLASS_A类型的对象上找不到属性lbl_no”。在声明lbl_no错误的属性解决后,但在10次push和pop操作之后,lbl_no始终保持为1.我很惊讶这种情况怎么解决?请解决它然后我会接受你的ansewer。谢谢 – Nikh1414 2013-02-27 11:06:52

相关问题