无法创建View Controller的实例

时间:2014-01-10 13:19:29

标签: ios iphone uiview uiviewcontroller

我有一个UIView子类。我无法在此UIView类中创建另一个View Controller的实例,以便我可以访问此View Controller中UIView子类中设置的变量?任何人都可以指导我这个

 #import <UIKit/UIKit.h>
 #import "DirectoryFormViewController.h"
 @class NIDropDown;

 @protocol NIDropDownDelegate
 - (void) niDropDownDelegateMethod: (NIDropDown *) sender;
 @end

 @interface NIDropDown : UIView <UITableViewDelegate, UITableViewDataSource>
 {
   NSString *animationDirection;
   UIImageView *imgView;
   DirectoryFormViewController *dict;  // i am not able to create this
 }



   @property (nonatomic, retain) id <NIDropDownDelegate> delegate;
   @property (nonatomic, retain) NSString *animationDirection;
   -(void)hideDropDown:(UIButton *)b;
    - (id)showDropDown:(UIButton *)b:(CGFloat *)height:(NSArray *)arr:(NSArray *)imgArr:       (NSString *)direction;
    @property(nonatomic)int countryID;
@end

我的DirectoyFormViewController:

                #import <UIKit/UIKit.h>

          #import "NIDropDown.h"
          @interface DirectoryFormViewController :   UIViewController<DropDownListDelegate,CLLocationManagerDelegate,UISearchBarDelegate,UITextFieldDelegate,NIDropDownDelegate>


   @property(nonatomic)NSMutableDictionary *countryName;
   @property(nonatomic,copy)NSMutableDictionary *sortName;
   @property(nonatomic,copy)NSMutableDictionary *resultName;


   @end

我想在我的NIDropDown中设置countryName,sortName和resultName

由于

1 个答案:

答案 0 :(得分:2)

以下是简短的回答:您应该永远不会出于任何原因在UIView内部创建视图控制器的实例。所以到目前为止你没有成功的事实是一件好事。

iOS上的Apple开发方式是使用Model, View, Controller设计模式。在MVC中,控制器控制模型和视图,并调解两者之间的通信......而不是相反。

我的建议是,在继续开发之前,您已阅读该链接并完全理解它。通过理解所涵盖的主题,你永远不会做像UIView那样的表视图委托/数据源(因为通过这样做,你的视图知道了模型,并打破了MVC),你希望永远不会尝试在UIView中创建一个UIViewController。