我尝试同时返回 UITextField 和 UIView (一个矩形框),这样我就可以在矩形UIView彩色框内有一个文本字段,但我一次只能返回一个值。是否可以返回2个值?或者我可以编辑文本字段以获得矩形彩色背景吗?此外,UITextField以编程方式调用,而不是从故事板调用。
非常感谢任何形式的帮助。谢谢。
答案 0 :(得分:2)
您可以return
帮助block
两个值。
请在下方code
找到它可能对您有所帮助。
- (void)getUIControlles:(void (^)(UITextField * objTextFiled, UIView * objView))completionBlock {
UITextField * textFiled = nil;
/*
do code here for textfiled
*/
UIView * viewDemo = nil;
/*
do code here for Uiview.
*/
completionBlock (textFiled, viewDemo);
}
- (void) testMethod {
// Call function with following way.
[self getUIControlles:^(UITextField *objTextFiled, UIView *objView) {
// objTextFiled = This is your textfiled object
// objView = This is your view object
}];
}
答案 1 :(得分:1)
在C,C ++和Objective-C中返回多个独立值的常用方法是通过指针:
@interface MyController (UIViewController)
- (void)getView:(UIView **)viewOut textField:(UITextField **)textFieldOut;
@end
@implementation MyController
- (void)getView:(UIView **)view textField:(UITextField **)textField {
UIView *view = [[UIView alloc] init];
// ... initialize view
UITextField *textField = [[UITextField alloc] init];
[view addSubview:textField];
// ... initialize textField
*viewOut = view;
*textFieldOut = textField;
}
@end
Apple使用此模式,例如在+[NSStream getStreamsToHostWithName:port:inputStream:outputStream:]
中(不在文档中,但在头文件中)。
使用示例:
UIView *view;
UITextField *textField;
[myController getView:&view textField:&textField];
[myController.view addSubview:view];
另一种方法是直接返回一个对象,另一个通过指针返回:
- (UITextField *)newTextFieldWithWrapperView:(UIView **)viewOut {
UIView *view = [[UIView alloc] init];
// ... initialize view
UITextField *textField = [[UITextField alloc] init];
[view addSubview:textField];
// ... initialize textField
*viewOut = view;
return textField;
}
Apple使用此模式,例如在-[NSAttributedString initWithFileURL:options:documentAttributes:error:]
中,它直接返回字符串,并可选择通过指针返回文档属性字典和错误对象。
答案 2 :(得分:0)
嗯,我从来没有在Objective C中编程,但是如果你坚持要返回2个值,那么创建一个Pair类就可以了。