Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在屏幕外滑动时,UITableViewCell中的按钮不可见_Uitableview - Fatal编程技术网

在屏幕外滑动时,UITableViewCell中的按钮不可见

在屏幕外滑动时,UITableViewCell中的按钮不可见,uitableview,Uitableview,我制作了一个自定义的UITableViewCell,除了在屏幕外滑动单元格时按钮变为不可见外,它工作正常: 当我切换到另一个视图并返回时,按钮再次可见: . 按钮仍然存在,可以点击以调用该过程,但文本似乎变为零。 知道为什么吗 守则: 设置查看控制器.h #import <UIKit/UIKit.h> @interface SettingsViewController : UIViewController <UITableViewDelegate, UITableVi

我制作了一个自定义的
UITableViewCell
,除了在屏幕外滑动单元格时按钮变为不可见外,它工作正常:

当我切换到另一个视图并返回时,按钮再次可见:

.

按钮仍然存在,可以点击以调用该过程,但文本似乎变为零。 知道为什么吗

守则:

设置查看控制器.h

#import <UIKit/UIKit.h>

@interface SettingsViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
@property (strong, nonatomic) IBOutlet UITableView *settingsTable;
@end
#import <UIKit/UIKit.h>

@interface MyCellClass : UITableViewCell
@property (weak, nonatomic) IBOutlet UIButton *button;
@property (weak, nonatomic) IBOutlet UILabel *textLabel;
@end
MyCellClass.h

#import <UIKit/UIKit.h>

@interface SettingsViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
@property (strong, nonatomic) IBOutlet UITableView *settingsTable;
@end
#import <UIKit/UIKit.h>

@interface MyCellClass : UITableViewCell
@property (weak, nonatomic) IBOutlet UIButton *button;
@property (weak, nonatomic) IBOutlet UILabel *textLabel;
@end
这是我看到带有按钮的自定义单元格时:

<MyCellClass: 0xa7cf1b0; baseClass = UITableViewCell; frame = (0 55; 320 44); text = 'Logged in as 1'; autoresize = W; layer = <CALayer: 0xa7cf380>>
   | <UITableViewCellScrollView: 0xa7bc3c0; frame = (0 0; 320 44); clipsToBounds = YES; autoresize = W+H; gestureRecognizers = <NSArray: 0xa7bc650>; layer = <CALayer: 0xa7bc590>; contentOffset: {0, 0}>
   |    | <UITableViewCellContentView: 0xa7cf470; frame = (0 0; 320 44); opaque = NO; gestureRecognizers = <NSArray: 0xa7be530>; layer = <CALayer: 0xa7bbdf0>>
   |    |    | <UIButton: 0xa7bbe20; frame = (217 5; 83 33); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0xa7bbf10>>
   |    |    | <UILabel: 0xa7bbf40; frame = (15 17; 199 21); text = 'Logged in as 1'; clipsToBounds = YES; autoresize = RM+BM; userInteractionEnabled = NO; layer = <CALayer: 0xa772f80>>

| 
|    | 
|    |    | 
|    |    | 
这是当我在刷卡后看到标准UITableViewCell没有按钮时:

<MyCellClass: 0xa7cf1b0; baseClass = UITableViewCell; frame = (0 55; 320 44); text = 'Logged in as 1'; autoresize = W; layer = <CALayer: 0xa7cf380>>
   | <UITableViewCellScrollView: 0xa7bc3c0; frame = (0 0; 320 44); clipsToBounds = YES; autoresize = W+H; gestureRecognizers = <NSArray: 0xa7bc650>; layer = <CALayer: 0xa7bc590>; contentOffset: {0, 0}>
   |    | <UITableViewCellContentView: 0xa7cf470; frame = (0 0; 320 43.5); opaque = NO; gestureRecognizers = <NSArray: 0xa7be530>; layer = <CALayer: 0xa7bbdf0>>
   |    |    | <UIButton: 0xa7bbe20; frame = (217 5; 83 33); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0xa7bbf10>>
   |    |    |    | <UIButtonLabel: 0xa897150; frame = (29 6; 54 21); text = 'Logout'; clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xa896860>>
   |    |    | <UILabel: 0xa7bbf40; frame = (15 17; 199 21); text = 'Logged in as 1'; clipsToBounds = YES; autoresize = RM+BM; userInteractionEnabled = NO; layer = <CALayer: 0xa772f80>>
   |    | <_UITableViewCellSeparatorView: 0xa88e8b0; frame = (0 43.5; 320 0.5); layer = <CALayer: 0xa8717d0>>
   |    | <_UITableViewCellSeparatorView: 0xa8780b0; frame = (0 0; 320 0.5); layer = <CALayer: 0xa882550>>

| 
|    | 
|    |    | 
|    |    |    | 
|    |    | 
|    | 
|    | 

原因是我将自定义单元格的@properties设置为“弱”而不是“强”:

所以我把它改成了“strong”:

然后我看到两个文本相互重叠。原因是我将文本标签命名为
textlab
,它与
UITableViewCell
中的文本标签同名。所以我基本上用相同的文本填充了两个文本标签,我注意到只有按钮消失了,但实际上是整个自定义单元格类消失了

因此,我还更改了酒店名称,效果很好:

@interface MyCustomCell : UITableViewCell
@property (strong, nonatomic) IBOutlet UIButton *buttonRight;
@property (strong, nonatomic) IBOutlet UILabel *labelLeft;
@end

显示您的表委托/数据源方法的代码Hanks Wain,添加了代码。因此,
MyCellClass
中的内容实际上与表代码无关。(另外,您什么时候创建
\u cell*
数组?我想只是没有显示?)实现
tableView:willDisplayCell:forrowatinexpath:
并在it日志中
NSLog(@“%@:\n%@”,indexath,[cell recursiveDescription])
一个
(0 480;0 0)
的框架没有宽度或高度,因此不是很有用
[(id)cell recursiveDescription]
可能有效(通常使用
po[cell recursiveDescription]
而不是在代码中)
@interface MyCustomCell : UITableViewCell
@property (strong, nonatomic) IBOutlet UIButton *buttonRight;
@property (strong, nonatomic) IBOutlet UILabel *textLabel;
@end
@interface MyCustomCell : UITableViewCell
@property (strong, nonatomic) IBOutlet UIButton *buttonRight;
@property (strong, nonatomic) IBOutlet UILabel *labelLeft;
@end