【发布时间】:2011-01-09 19:38:24
【问题描述】:
我是 iPhone 编程的新手。我正在尝试从一个视图控制器向另一个视图控制器发送消息。这个想法是 viewControllerA 从用户那里获取信息并将其发送到 viewControllerB。 viewControllerB 然后应该在标签中显示信息。
viewControllerA.h
#import <UIKit/UIKit.h>
@interface viewControllerA : UIViewController
{
int num;
}
-(IBAction)do;
@end
viewControllerA.m
#import "viewControllerA.h"
#import "viewControllerB.h"
@implementation viewControllerA
- (IBAction)do {
//initializing int for example
num = 2;
viewControllerB *viewB = [[viewControllerB alloc] init];
[viewB display:num];
[viewB release];
//viewA is presented as a ModalViewController, so it dismisses itself to return to the
//original view, i know it is not efficient
[self dismissModalViewControllerAnimated:YES];
}
- (void)dealloc {
[super dealloc];
}
@end
viewControllerB.h
#import <UIKit/UIKit.h>
@interface viewControllerB : UIViewController
{
IBOutlet UILabel *label;
}
- (IBAction)openA;
- (void)display:(NSInteger)myNum;
@end
viewControllerB.m
#import "viewControllerB.h"
#import "viewControllerA.h"
@implementation viewControllerB
- (IBAction)openA {
//presents viewControllerA when a button is pressed
viewControllerA *viewA = [[viewControllerA alloc] init];
[self presentModalViewController:viewA animated:YES];
}
- (void)display:(NSInteger)myNum {
NSLog(@"YES");
[label setText:[NSString stringWithFormat:@"%d", myNum]];
}
@end
YES 成功记录,但标签的文本没有改变。我已经确定 我在 Interface Builder 中的所有连接都是正确的,实际上还有其他的(IBAction) 在我的程序中更改此标签文本的方法,所有其他方法都可以完美运行...
有什么想法吗,伙计们?您不需要给我一个完整的解决方案,任何信息都会有所帮助。谢谢。
【问题讨论】:
-
只是为了让您知道 IBAction 方法采用单个
(id)sender参数。 -
ps。不是你的问题,但也要注意内存泄漏。任何
alloc(或copy、new、retain)都应后跟release或autorelease。 -
@Abizern 他们不是必须的。它们可以匹配developer.apple.com/library/ios/documentation/UIKit/Reference/… 中指定的任何形式
-
@Justin - 我不知道 UIApplication。谢谢!
标签: iphone objective-c sdk messages