【问题标题】:how to connect IBOutlet from a class to another class如何将 IBOutlet 从一个类连接到另一个类
【发布时间】:2014-03-01 20:31:44
【问题描述】:

我有 A 类,其中包含一个带有一些按钮的 xib 和一个 UITextField 和 B 类,其中包含一个 tableView 我想将 A 类添加到表视图标题中。

我正在使用 [[[NSBundle mainBundle] loadNibName: owner:self options:nil] objectAtIndex:0]; 将 xib 从 A 类导入 B 类

我只想在 classB 中反映按钮和 textview 操作。在 ClassB 中,我确实有一些 UITextfield 委托方法,我希望在 ClassA 中定义和声明的 uitextfield 中键入一些文本时调用这些方法(xib + .h 文件中的属性定义)。

A类.h:

//properties are set from xib file ClassA.xib
@interface ClassA : UIView

@property (unsafe_unretained, nonatomic) IBOutlet UIButton *addC; 
@property(strong, nonatomic) IBOutlet UITextField *nText;

@end

B类.h

#import "ClassA"
@interface ClassB : UIViewController <UITextFieldDelegate, UITableViewDataSource,...>

@property (strong, nonatomic) IBOutlet UITableView *mTableView; //property set from ClassB.xib
@property(strong, nonatomic) IBOutlet UITextField *nText_B;
@property (unsafe_unretained, nonatomic) IBOutlet UIButton *addC_B;

- (IBAction)addC:(UIButton *)sender;
@end

我不知道如何将 ClassB 按钮和文本字段链接到 ClassA 在 ClassB viewDidLoad 方法中,我试过这个:

 getHeader = [[ClassA alloc]init];
   _addC_B = [getHeader addC];
   _nText_B = [getHeader nText]; 
    _nText_B.delegate =self;
    _nText_B.text=@"";

但它不起作用 我在这方面是 iOS 新手。 谢谢你的帮助

【问题讨论】:

    标签: ios xib iboutlet


    【解决方案1】:

    你没有很好地解释你的问题。类不“包含 xib”。

    如果您的目标是在 XIB 中创建一个用户界面并重用它,您可以通过 [NSBundle loadNibNamed:owner:options:] 实现此目的。引用其中部分内容的最佳方法是通过 Noval 在他的回答中解释的属性。另一种可能性是将视图附加到“文件所有者”插座的属性。

    【讨论】:

    • 我正在使用 NSBundle loadNibName。我只想将 IBoutlet 从一个班级连接到另一个班级
    • 我确实尝试在 viewDidLoad 中的 ClassB 内创建 classA 的实例,但是当我在 UITextField 中键入一些输入值时,不会调用 UITextField 委托方法
    • 如果你这样做:[[ClassA alloc]init];你没有加载笔尖。
    • 您将 UITextField 的委托设置为什么?
    • 这里是我的委托方法:-(void)textFieldDidBeginEditing:(UITextField *)textField {...} - (void)textFieldDidEndEditing:(UITextField *)aTextField 和 -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)范围替换字符串:(NSString *)string {
    【解决方案2】:

    您无法连接放置在您的 XIB 类之外的 IBOutlet。但如果您只想从其他类访问插座,可以通过在ClassB 中创建ClassA 的实例来实现。然后访问像instanceOfClassA.outletObject这样的属性

    【讨论】:

    • getHeader 是 classA 的一个实例,但这仍然不能解决问题。当我在 UITextField 中键入一些文本时,不会调用 UITextField 委托方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-13
    • 1970-01-01
    • 2019-08-03
    • 1970-01-01
    相关资源
    最近更新 更多