Objective-C新手。从另一个Controller更改Controller中的属性?

时间:2011-01-25 14:52:37

标签: iphone objective-c cocoa-touch iboutlet

背景:我有三个观点。一个介绍视图,上载视图和主视图。作为类(使用它们各自的头文件),我有rootViewController(SwitchViewController),IntroViewController和UploadViewController。要显示的第一个视图是IntroView。用户按下一个按钮(在SwitchViewController中声明),将它们带到UploadView,然后在UploadView中,他们可以选择图像并再次按下按钮返回IntroView。

事情是,当用户使用UIImagePickerController选择图像时,切换视图的按钮不会隐藏,也不会隐藏UIImageView,我在视图(屏幕)顶部有一个徽标。 UIImageView和UIButton都在SwitchViewController的头文件中声明。

使用的代码:

UploadViewController.h

#import [...] //Imports
@class SwitchViewController;
@interface UploadViewController : 
UIViewController <UIImagePickerControllerDelegate, 
UINavigationControllerDelegate,UIActionSheetDelegate> {
    UITextField *imageTextField;
    UIImageView *uploadedImage;
    SwitchViewController *switchViewController;
[...]
}

@property (nonatomic, retain) SwitchViewController *switchViewController;
@property (nonatomic, retain) IBOutlet UITextField *imageTextField;
@property (nonatomic, retain) IBOutlet UIImageView *uploadedImage;
[...]
@end

UploadViewController.m

[...]
- (IBAction) selectImageButtonPressed {
self.switchViewController.submitButton.hidden = YES;
self.switchViewController.imageLogo.hidden = YES;

[...] //continues

我最近刚开始使用objective-c编程,所以如果问题非常重要,请原谅我。我看过并正在关注APRESS的“开始iPhone 3开发”。但即使有助于大大了解基础知识,有时我也会迷失方向。

PS:如果更清楚地回答问题,可以提出SwitchViewController.h和.m片段代码。但我认为这个文本很大。

2 个答案:

答案 0 :(得分:0)

@Joze我想我可能已经理解你的问题switchViewController是类UploadViewController的一个变量,所以如果你对该变量做任何事情,它就不会影响switchViewController视图。所以当你在那时调用switchViewController视图时,你必须执行initWithNibName: bundle:然后隐藏按钮和imageView,你还需要做switchViewController.delegate = self;之类的事情,然后以模态或任何方式调用视图你想要它。

PS。我不确定拼写是否正确。我家里没有xcode。 我希望你的问题可以解决这个问题。

答案 1 :(得分:0)

我在重构整个代码并改变程序本身的一般结构后解决了我的问题。现在我有3个视图,每个视图都有一个viewController来控制它。所有视图切换都发生在Delegate中,因为他可以访问所有人。这样我可以用每个控制器控制每个属性,没有太大困难。将一个视图中存在的一个对象的属性从另一个视图改变是困难的,并且如果有时不可能则相当不方便。 (虽然我做这些陈述仍然是业余爱好者)

我在提出这个问题时采用的方法对于必须完成的应用程序是短视的。我感谢所有试图提供帮助的人。