- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我将 UITableView
嵌入到子类 UIViewController
中。此 UITableView
使用带有图像和文本的单个动态原型(prototype),这两者都可以根据加载到其中的内容而变化。我遇到的问题是 UITableView
绝对没有出现在子类 UIViewController
上。 UITableView
本身似乎没有出现。
我在子类 UIViewController
中为 UITableView
创建了一个 IBOutlet
,如下所示:
@property (weak, nonatomic) IBOutlet UITableView *functionTableView;
正确链接回 UITableView
。
在父 UIViewController
的 viewDidLoad
方法中,我有以下代码:
self.functionTableView.delegate = self;
self.functionTableView.dataSource = self;
[self.functionTableView reloadData];
我也为类(class)声明了代表。我正在使用的数据源目前是一个 NSMutableArray
,其中包含带有数据的对象。我已经实现了 UITableViewDataSource
和 UITableViewDelegate
方法如下:
#pragma mark - Table view data source delegate
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// Return the number of sections.
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
NSLog(@"tableView:numberofRowsInSection %u", [[EmulatorModel sharedEmulatorModel].currentFunctionBank count]);
return [[EmulatorModel sharedEmulatorModel].currentFunctionBank count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"Updating Cell %d", indexPath.row);
NSLog(@"For Function %@", [EmulatorModel sharedEmulatorModel].currentFunctionBank[indexPath.row]);
static NSString *CellIdentifier = @"FunctionCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
// Configure the cell...
LivioFunction *func = nil;
if ([EmulatorModel sharedEmulatorModel].currentFunctionBank[indexPath.row] != [NSNull null]) {
func = [EmulatorModel sharedEmulatorModel].currentFunctionBank[indexPath.row];
NSLog(@"Cell Text: %@", func.label);
cell.textLabel.text = func.label;
NSLog(@"Cell Image %@", func.artwork);
cell.imageView.image = func.artwork;
} else {
cell.textLabel.text = @" ";
cell.imageView.image = [UIImage imageNamed:@"HD_fav.png"];
}
NSLog(@"cell: %@", cell);
return cell;
}
#pragma mark - Table view delegate
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"Table view row selected: %d", indexPath.row);
if ([EmulatorModel sharedEmulatorModel].currentFunctionBank[indexPath.row]) {
id fn = nil;
fn = ([EmulatorModel sharedEmulatorModel].currentFunctionBank)[indexPath.row];
if (fn && [fn isKindOfClass:[LivioFunction class]]) {
LivioFunction *function = (LivioFunction*)fn;
if (function.functionID == indexPath.row && function.type == LVCFunctionTypeMenu) {
[self resetButtonImages];
[self resetButtonLabels];
}
}
[LivioConnectLib sendUserSelect:indexPath.row inputType:LVCInputTypeFunction];
}
}
NSLog 的
吐出正确的数据,我在 viewDidLoad
中使用的重新加载数据导致数据源 delegate
方法被叫到。所以在我第一次尝试 iOS UI 时,我感到非常困惑和沮丧。想法?
编辑:请求 lldb 调试器输出到 po [[UIApp keyWindow] recursiveDescription]
(id) $0 = 0x0018c7d0 <UIWindow: 0xde9e830; frame = (0 0; 768 1024); layer = <UIWindowLayer: 0xde9a9d0>>
| <UILayoutContainerView: 0xde9fa30; frame = (0 0; 768 1024); transform = [0, -1, 1, 0, 0, 0]; autoresize = W+H; layer = <CALayer: 0xde9fab0>>
| | <UINavigationTransitionView: 0xde9fdc0; frame = (0 0; 1024 768); clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0xde9fe40>>
| | | <UIViewControllerWrapperView: 0x182430; frame = (0 64; 1024 704); autoresize = RM+BM; layer = <CALayer: 0x17f4e0>>
| | | | <UIView: 0xdedf2c0; frame = (0 0; 1024 704); autoresize = RM+BM; layer = <CALayer: 0xdedf2f0>>
| | | | | <UIImageView: 0xdedf320; frame = (0 0; 1024 704); autoresize = RM+BM; userInteractionEnabled = NO; layer = <CALayer: 0xdedf360>>
| | | | | <AutoScrollLabel: 0xdedecd0; baseClass = UIScrollView; frame = (433 386; 366 48); text = 'Livio Emulator'; clipsToBounds = YES; autoresize = RM; userInteractionEnabled = NO; layer = <CALayer: 0xdedeb80>; contentOffset: {0, 0}>
| | | | | | <UILabel: 0xdedef20; frame = (81.5 5; 203 38); text = 'Livio Emulator'; clipsToBounds = YES; userInteractionEnabled = NO; layer = <CALayer: 0xdedef90>>
| | | | | | <UILabel: 0xdedefc0; frame = (283 5; 203 38); text = 'Livio Emulator'; clipsToBounds = YES; hidden = YES; userInteractionEnabled = NO; layer = <CALayer: 0xdedf110>>
| | | | | | <UILabel: 0xdedf140; frame = (566 5; 203 38); text = 'Livio Emulator'; clipsToBounds = YES; hidden = YES; userInteractionEnabled = NO; layer = <CALayer: 0xdedf290>>
| | | | | <UIImageView: 0xdedd820; frame = (733 169; 67 25); autoresize = RM+BM; userInteractionEnabled = NO; layer = <CALayer: 0xdedd640>>
| | | | | <UIImageView: 0xdeddb90; frame = (524 200; 175 178); autoresize = RM+BM; userInteractionEnabled = NO; layer = <CALayer: 0xdedd700>>
| | | | | <UILabel: 0xdedf1b0; frame = (432 431; 368 27); text = 'Connect an app '; clipsToBounds = YES; opaque = NO; autoresize = RM+BM; userInteractionEnabled = NO; layer = <CALayer: 0xdedc440>>
| | | | | <UIButton: 0xdede910; frame = (57 169; 100 52); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0xdede9a0>>
| | | | | | <UIButtonLabel: 0xdedeab0; frame = (0 0; 0 0); clipsToBounds = YES; hidden = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xdedeb20>>
| | | | | <UIButton: 0xdede070; frame = (57 229; 100 50); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0xdede000>>
| | | | | | <UIButtonLabel: 0xdede100; frame = (0 0; 0 0); clipsToBounds = YES; hidden = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xdede030>>
| | | | | <UIButton: 0xdedf3e0; frame = (325 455; 368 38); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0xdedf4d0>>
| | | | | | <UIButtonLabel: 0xdedf590; frame = (0 0; 0 0); clipsToBounds = YES; hidden = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xdedf600>>
| | | | | <UIButton: 0xdedf650; frame = (325 487; 368 34); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0xdedf780>>
| | | | | | <UIButtonLabel: 0xdedf7f0; frame = (0 0; 0 0); clipsToBounds = YES; hidden = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xdedf860>>
| | | | | <UITableView: 0xe97d800; frame = (226 164; 276 338); clipsToBounds = YES; alpha = 0; opaque = NO; autoresize = W+H; layer = <CALayer: 0xdede2c0>; contentOffset: {0, 0}>
| | | | | | <UITableViewCell: 0xdedfbc0; frame = (0 308; 276 44); text = ' '; autoresize = W; layer = <CALayer: 0xdedf090>>
| | | | | | | <UITableViewCellContentView: 0xdedfcc0; frame = (0 0; 276 43); layer = <CALayer: 0xdedf0c0>>
| | | | | | | | <UIImageView: 0xdedfd00; frame = (0 0; 43 43); clipsToBounds = YES; opaque = NO; layer = <CALayer: 0xdedfd40>>
| | | | | | | | <UILabel: 0xdee01b0; frame = (53 0; 213 43); text = ' '; clipsToBounds = YES; layer = <CALayer: 0xdee0220>>
| | | | | | | <UIView: 0xdedfdc0; frame = (0 43; 276 1); autoresize = W+TM; layer = <CALayer: 0xdedfdf0>>
| | | | | | <UITableViewCell: 0x197220; frame = (0 264; 276 44); text = ' '; autoresize = W; layer = <CALayer: 0x197320>>
| | | | | | | <UITableViewCellContentView: 0x196b50; frame = (0 0; 276 43); layer = <CALayer: 0x196b90>>
| | | | | | | | <UIImageView: 0x196bc0; frame = (0 0; 43 43); clipsToBounds = YES; opaque = NO; layer = <CALayer: 0x19b0d0>>
| | | | | | | | <UILabel: 0x19cf90; frame = (53 0; 213 43); text = ' '; clipsToBounds = YES; layer = <CALayer: 0x19d000>>
| | | | | | | <UIView: 0xdeddf90; frame = (0 43; 276 1); autoresize = W+TM; layer = <CALayer: 0xdeddfc0>>
| | | | | | <UITableViewCell: 0xdedd100; frame = (0 220; 276 44); text = ' '; autoresize = W; layer = <CALayer: 0xdedd200>>
| | | | | | | <UITableViewCellContentView: 0xdedd060; frame = (0 0; 276 43); layer = <CALayer: 0xdedd230>>
| | | | | | | | <UIImageView: 0xdedd260; frame = (0 0; 43 43); clipsToBounds = YES; opaque = NO; layer = <CALayer: 0xdedd2a0>>
| | | | | | | | <UILabel: 0xdeddc40; frame = (53 0; 213 43); text = ' '; clipsToBounds = YES; layer = <CALayer: 0xdeddcf0>>
| | | | | | | <UIView: 0xdedf060; frame = (0 43; 276 1); autoresize = W+TM; layer = <CALayer: 0xdeddf60>>
| | | | | | <UITableViewCell: 0xdedcd70; frame = (0 176; 276 44); text = ' '; autoresize = W; layer = <CALayer: 0xdea80d0>>
| | | | | | | <UITableViewCellContentView: 0xdedd5a0; frame = (0 0; 276 43); layer = <CALayer: 0xdedd750>>
| | | | | | | | <UIImageView: 0xdedf9b0; frame = (0 0; 43 43); clipsToBounds = YES; opaque = NO; layer = <CALayer: 0xdedd780>>
| | | | | | | | <UILabel: 0xdedbdc0; frame = (53 0; 213 43); text = ' '; clipsToBounds = YES; layer = <CALayer: 0xded9e10>>
| | | | | | | <UIView: 0xdedd0d0; frame = (0 43; 276 1); autoresize = W+TM; layer = <CALayer: 0xdedf030>>
| | | | | | <UITableViewCell: 0x19fc80; frame = (0 132; 276 44); text = ' '; autoresize = W; layer = <CALayer: 0x19fd80>>
| | | | | | | <UITableViewCellContentView: 0x18f4b0; frame = (0 0; 276 43); layer = <CALayer: 0x19d680>>
| | | | | | | | <UIImageView: 0x191b20; frame = (0 0; 43 43); clipsToBounds = YES; opaque = NO; layer = <CALayer: 0x19d6b0>>
| | | | | | | | <UILabel: 0x1934b0; frame = (53 0; 213 43); text = ' '; clipsToBounds = YES; layer = <CALayer: 0x1975e0>>
| | | | | | | <UIView: 0xdedfa20; frame = (0 43; 276 1); autoresize = W+TM; layer = <CALayer: 0xdedd0a0>>
| | | | | | <UITableViewCell: 0x1931b0; frame = (0 88; 276 44); text = ' '; autoresize = W; layer = <CALayer: 0x18ec60>>
| | | | | | | <UITableViewCellContentView: 0x199550; frame = (0 0; 276 43); layer = <CALayer: 0x18cb70>>
| | | | | | | | <UIImageView: 0x18c6a0; frame = (0 0; 43 43); clipsToBounds = YES; opaque = NO; layer = <CALayer: 0x189a90>>
| | | | | | | | <UILabel: 0x198fe0; frame = (53 0; 213 43); text = ' '; clipsToBounds = YES; layer = <CALayer: 0x197960>>
| | | | | | | <UIView: 0xdeddcb0; frame = (0 43; 276 1); autoresize = W+TM; layer = <CALayer: 0xdedf720>>
| | | | | | <UITableViewCell: 0xde73230; frame = (0 44; 276 44); text = ' '; autoresize = W; layer = <CALayer: 0xdeb92e0>>
| | | | | | | <UITableViewCellContentView: 0xdedc070; frame = (0 0; 276 43); layer = <CALayer: 0xdedc560>>
| | | | | | | | <UIImageView: 0xdedd7e0; frame = (0 0; 43 43); clipsToBounds = YES; opaque = NO; layer = <CALayer: 0xdedda50>>
| | | | | | | | <UILabel: 0xdeddaa0; frame = (53 0; 213 43); text = ' '; clipsToBounds = YES; layer = <CALayer: 0xde9fc80>>
| | | | | | | <UIView: 0xdeddd60; frame = (0 43; 276 1); autoresize = W+TM; layer = <CALayer: 0xdee02c0>>
| | | | | | <UITableViewCell: 0x1a03e0; frame = (0 0; 276 44); text = ' '; autoresize = W; layer = <CALayer: 0x190eb0>>
| | | | | | | <UITableViewCellContentView: 0x197a40; frame = (0 0; 276 43); layer = <CALayer: 0x197ac0>>
| | | | | | | | <UIImageView: 0x19f440; frame = (0 0; 43 43); clipsToBounds = YES; opaque = NO; layer = <CALayer: 0x185c30>>
| | | | | | | | <UILabel: 0xdeda920; frame = (53 0; 213 43); text = ' '; clipsToBounds = YES; layer = <CALayer: 0xdeb8d80>>
| | | | | | | <UIView: 0xdedb8b0; frame = (0 43; 276 1); autoresize = W+TM; layer = <CALayer: 0xded9de0>>
| | | | | | <UIImageView: 0xdede5d0; frame = (271 287; 5 7); alpha = 0; opaque = NO; autoresize = LM; userInteractionEnabled = NO; layer = <CALayer: 0xdedd530>>
| | <UINavigationBar: 0xde9bab0; frame = (0 20; 1024 44); clipsToBounds = YES; opaque = NO; autoresize = W; layer = <CALayer: 0xde9bbe0>>
| | | <UINavigationBarBackground: 0xde9d750; frame = (0 0; 1024 44); opaque = NO; autoresize = W; userInteractionEnabled = NO; layer = <CALayer: 0xde9d7e0>>
| | | <UINavigationItemView: 0x186830; frame = (512 21; 0 0); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x18c3a0>>
| | | <UINavigationItemButtonView: 0x190cf0; frame = (7 7; 104 30); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x196840>>
最佳答案
从 lldb 调试器输出:alpha
在你的 UITableView
为 0。
<UITableView: 0xe97d800; frame = (226 164; 276 338); clipsToBounds = YES; alpha = 0; opaque = NO; autoresize = W+H; layer = <CALayer: 0xdede2c0>; contentOffset: {0, 0}>
关于objective-c - UITableView动态内容不会出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13886089/
在 JavaScript 中,我们可以动态创建 元素并附加到 部分,以便为大量元素应用 CSS 规则。 这种方法的优点或缺点是什么? 如果它确实提供了与元素上的 javascript 迭代相比的性
我有这个代码 import "./HTTPMethod.dart"; import '../../DataModel/DataModel.dart'; mixin RouterMixin { HT
哪些 OLAP 工具支持动态、动态地创建维度或层次结构? 例如,层次结构将成员定义为:“前 5 名”、“前 6-10 名”、“其他”... 计算成员是通常的答案,我正在寻找不同的东西。计算器的问题。成
我正在 CakePHP 中创建一个“表单编辑器”。 该界面允许用户选择要应用于字段的验证,例如数字、电子邮件等 因此,我需要根据用户输入为模型动态创建验证。为此,我可以使用验证对象:https://b
这是一个场景: 我有一个Web服务,我们将其称为部署在tomcat(轴)上的StockQuoteService。通过此 Web 服务公开了 getStockQuote() 方法。 现在,我想构建一个
我正在尝试从服务器获取 JSON 响应并将其输出到控制台。 Future login() async { var response = await http.get( Uri.
我从另一个问题中得到了这段代码(感谢 chunhunghan)。我需要创建一个登录屏幕,并尝试根据服务器发回给我的响应来验证用户凭据,但是每次我尝试运行代码时,它都会给我“未处理的异常:Interna
当我在“Dart”主程序中运行它时,一切正常,并且我得到了一个与会者列表。但是,当我在我的 Flutter 应用程序中调用它时,出现错误: flutter:“List”类型不是“List>”类型的子类
本文实例为大家分享了js实现验证码动态干扰的具体代码,供大家参考,具体内容如下 效果一 效果二 代码一 ?
目前我正在为我的网站使用 No-Ip,我想使用 cloudflare 来抵御 ddos 和机器人程序。我注意到您需要一个用于 cloudflare 的域。我还搜索了网络,发现了一个叫做 cloud
有没有办法在 Excel VBA 中构建动态 if 语句?基本上我正在尝试创建一个参数化计算,用户将能够输入不同的变量,即 变量 1 “变量 2” “变量 3” 在这种情况下 变量 1 是单元格引用
大家好, 请查看上面的图片,我有两张 table 。在下面代码的第一个表中,我得到了这种格式。 但我想像 Table2 那样格式化,每个合并单元格中的行数是动态的,而且不一样。 有没有办法像table
如何根据我添加的 View 修改标题部分的高度?heightForHeaderInSection在 viewForHeaderInSection 之前被调用我不知道 View 大小,直到我创建它。 最
是否存在在运行时生成 AST/解析树的解析器?有点像一个库,它会接受一串 EBNF 语法或类似的东西并吐出数据结构? 我知道 antlr、jlex 和他们的同类。他们生成可以做到这一点的源代码。 (喜
我在持有汽车制造商的表格上有一个 MultipleChoiceField。我想将我的汽车数据库过滤到已检查的品牌,但这会导致问题。如何动态获取所有 Q(make=...) 语句? 我如何开始:['va
$end = preg_replace($pattern, $replacement, $str); 如何使替换字符串 $replacement 随 $str 中的每次匹配而变化?例如,我想用关联的图
我正在编写一个 VBA 程序,用于过滤表中的值。我试图使其成为一个适用于您提供的所有表格的通用程序。在我的程序中,我必须设置它正在过滤的表的范围:Set rng = dataSheet.Range("
我正在循环一个元素数组,并且我想使用给定的模板递归地显示该元素 然后在该模板内使用带有切换功能的按钮来显示/隐藏给定元素的Child的更深级别模板(Child也是一个元素) 这是我的模板
从客户端(html)发送表单,服务器端通过选择选项之一决定运行哪个函数。 const decideWho = (form) => { const choice = form.choice; c
我有一个具有以下属性的按钮: circle_normal.xml(在 res/drawable 中) circle.xml(在 res/drawable 中)
我是一名优秀的程序员,十分优秀!