【发布时间】:2015-08-26 08:47:21
【问题描述】:
我正在尝试清理我的代码。我的 ViewController 中有 3 个pickerView,我想在单独的文件中实现委托。
id imp = [[HourPickerImplementation alloc] init];
self.hourPicker.dataSource = imp;
self.hourPicker.delegate = imp;
HourPickerImplementation.h:
@interface HourPickerImplementation : NSObject <UIPickerViewDataSource, UIPickerViewDelegate>
@end
HourPickerImplementation.m:
@implementation HourPickerImplementation {
NSMutableArray *_pickerData;
}
- (id)init {
_pickerData = [[NSMutableArray alloc] initWithCapacity:25];
for (int i = 0; i < 25; i++) {
[_pickerData addObject:[NSString stringWithFormat:@"%d H.", i]];
}
return self;
}
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component {
return _pickerData.count;
}
- (UIView *)pickerView:(UIPickerView *)pickerView
viewForRow:(NSInteger)row
forComponent:(NSInteger)component
reusingView:(UIView *)view {
UIImage *img = [UIImage imageNamed:@"icon_lock.png"];
UIImageView *temp = [[UIImageView alloc] initWithImage:img];
temp.frame = CGRectMake(51, 20, 20, 20);
UILabel *channelLabel =
[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 50, 60)];
channelLabel.text =
[NSString stringWithFormat:@"%@", [_pickerData objectAtIndex:row]];
channelLabel.textColor = [UIColor whiteColor];
channelLabel.backgroundColor = [UIColor clearColor];
UIView *tmpView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 110, 60)];
[tmpView insertSubview:temp atIndex:0];
[tmpView insertSubview:channelLabel atIndex:1];
return tmpView;
}
不幸的是它给了我这个错误:
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x170099c80 V:[UIImageView:0x12751a110(55)]>
Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
2015-08-26 10:30:30.489 bollywood[675:103276] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x17009a540 V:[UIImageView:0x12751c480(55)]>",
"<NSLayoutConstraint:0x17009a590 V:[UIImageView:0x12751c5c0(50)]>",
"<NSLayoutConstraint:0x17009a810 V:[UIImageView:0x12751c480]-(12)-[UIImageView:0x12751c5c0]>",
"<NSLayoutConstraint:0x17009a900 UITableViewCellContentView:0x12751bcd0.bottomMargin == UIImageView:0x12751c5c0.bottom>",
"<NSLayoutConstraint:0x17009aa40 UIImageView:0x12751c480.top == UITableViewCellContentView:0x12751bcd0.topMargin + 12>",
"<NSLayoutConstraint:0x1740961c0 'UIView-Encapsulated-Layout-Height' V:[UITableViewCellContentView:0x12751bcd0(139)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x17009a540 V:[UIImageView:0x12751c480(55)]>
Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
我做错了什么?它可以在一个文件中使用,但看起来很糟糕。
【问题讨论】:
-
我很确定您发布的代码与您发布的错误无关。
-
在评论此部分后:
//id imp = [[HourPickerImplementation alloc] init]; //self.hourPicker.dataSource = imp; //self.hourPicker.delegate = imp;应用程序有效 - 但显然选择器中没有任何内容
标签: ios objective-c delegates uipickerview code-cleanup