- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我很难将一个 UITableViewController
与另一个 UITableView
一起使用。众所周知,UITableViewController
有自己的UITableView
。我使用 UITableView
来显示细节;每个 UITableViewCell
都有对应的字段。所以我用一个唯一的标识符命名每个单元格。但是我需要另一个包含动态原型(prototype)单元格的 UITableView
,这个 UITableView 的
字段与预制的 UITableView
不同,行数取决于数组计数。这是我的代码:
@interface CourseJobTVC ()
{ sqlite3 *_db;}
@property (weak, nonatomic) IBOutlet UITableView *cTableLabel;
@end
@implementation CourseJobTVC
@synthesize jDetails=_jDetails;
- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
_jDetails = (Jobs *)self.jDetails;
NSString *title1 = _jDetails.jName;
self.navigationItem.title = title1;
[self course];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(NSArray *)course;
{
NSString *sqLiteDb = [[NSBundle mainBundle]pathForResource:@"CourseFindr" ofType:@"sqlite"];
sqlite3_stmt *statement;
NSMutableArray *retrieve = [[NSMutableArray alloc] init];
if (sqlite3_open([sqLiteDb UTF8String], &_db) == SQLITE_OK)
{
NSString *query= [NSString stringWithFormat:@"SELECT course. * FROM course INNER JOIN jobsCourse ON jobsCourse.courseID = course.cID WHERE jobsCourse.jobID = %d", _jDetails.jID];
if (sqlite3_prepare_v2(_db, [query UTF8String], -1, &statement, nil) == SQLITE_OK)
{
while (sqlite3_step(statement) == SQLITE_ROW)
{
int _cID = sqlite3_column_int(statement, 0);
char *cNameChars = (char *) sqlite3_column_text(statement,1);
char *cDescChars = (char *) sqlite3_column_text(statement, 2);
char *cSchoolChars = (char *) sqlite3_column_text (statement, 3);
char *cProgramChars = (char *) sqlite3_column_text(statement, 4);
NSString *_cName =cNameChars?[[NSString alloc]initWithUTF8String:cNameChars]:@"";
NSString *_cDesc = cDescChars?[[NSString alloc]initWithUTF8String:cDescChars]:@"";
NSString *_cSchool = cSchoolChars?[[NSString alloc]initWithUTF8String:cSchoolChars]:@"";
NSString *_cProgram = cProgramChars?[[NSString alloc]initWithUTF8String:cProgramChars]:@"";
Course *courses = [[Course alloc]
initWithCID:_cID
cName:_cName
cDesc:_cDesc
cSchool:_cSchool
cProgram:_cProgram];
[retrieve addObject:courses];
}
sqlite3_finalize(statement);
}
}
return retrieve;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
if(tableView == self.cTableLabel) {NSLog(@"Array count: %d", [self.course count]);
return [self.course count];}
return 0;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell ;
if(tableView != self.cTableLabel){
//jobName
cell = [self.tableView dequeueReusableCellWithIdentifier:@"jNameCell"];
if(cell ==nil)
{ cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"jNameCell"];
cell.textLabel.text =_jDetails.jName;}
//jobEarnings
cell =[self.tableView dequeueReusableCellWithIdentifier:@"jEarningsCell"];
if(cell ==nil)
{cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"jEarningsCell"];
cell.detailTextLabel.text = _jDetails.jEarnings;}
//jobDesc
cell =[self.tableView dequeueReusableCellWithIdentifier:@"jDescCell"];
if(cell == nil)
{ cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"jDescLabel"];
cell.detailTextLabel.text =_jDetails.jDesc;}
return cell;}
else if(tableView == self.cTableLabel){
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"showCDetails"];
Course *courses = [self.course objectAtIndex:indexPath.row];
cell.textLabel.text =courses.cName;
cell.detailTextLabel.text =courses.cSchool;
return cell;
}
return 0;
}
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([[segue identifier]isEqualToString:@"showCourseDetails"]) {
CourseTVC *courseTVC = [segue destinationViewController];
courseTVC.cDetails = [self.course objectAtIndex:[self.cTableLabel indexPathForSelectedRow].row];
}
}
@end
我的错误是,我无法从预制的 UITableView
加载详细信息。当数组计数超过 2 时,其他 UITableView
崩溃。我我已经尝试过将 UIViewController
与 UITableView
结合使用,但是当详细信息超出页面时,我无法让它滚动。而且它看起来非常杂乱无章。我想用 2 个 UITableViews
尝试 UIViewController
但我的代码确实有问题...请帮助。
崩溃报告:
*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 4 beyond bounds [0 .. 3]'
*** First throw call stack:
(
0 CoreFoundation 0x018325e4 __exceptionPreprocess + 180
1 libobjc.A.dylib 0x015b58b6 objc_exception_throw + 44
2 CoreFoundation 0x017e69c2 -[__NSArrayI objectAtIndex:] + 210
3 UIKit 0x0076415e -[UITableViewDataSource tableView:heightForRowAtIndexPath:] + 127
4 UIKit 0x004f5e67 -[UITableViewController tableView:heightForRowAtIndexPath:] + 76
5 UIKit 0x0048cb4b __66-[UISectionRowData refreshWithSection:tableView:tableViewRowData:]_block_invoke + 462
6 UIKit 0x0048c450 -[UISectionRowData refreshWithSection:tableView:tableViewRowData:] + 4190
7 UIKit 0x0048f6bd -[UITableViewRowData numberOfRows] + 98
8 UIKit 0x00317db2 -[UITableView noteNumberOfRowsChanged] + 120
9 UIKit 0x0031775f -[UITableView reloadData] + 814
10 UIKit 0x0031b1c3 -[UITableView _reloadDataIfNeeded] + 65
11 UIKit 0x0031fde4 -[UITableView layoutSubviews] + 36
12 UIKit 0x002a4267 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 355
13 libobjc.A.dylib 0x015c781f -[NSObject performSelector:withObject:] + 70
14 QuartzCore 0x03bf02ea -[CALayer layoutSublayers] + 148
15 QuartzCore 0x03be40d4 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 380
16 QuartzCore 0x03be3f40 _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 26
17 QuartzCore 0x03b4bae6 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 294
18 QuartzCore 0x03b4ce71 _ZN2CA11Transaction6commitEv + 393
19 QuartzCore 0x03b4d544 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 92
20 CoreFoundation 0x017fa4ce __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 30
21 CoreFoundation 0x017fa41f __CFRunLoopDoObservers + 399
22 CoreFoundation 0x017d8344 __CFRunLoopRun + 1076
23 CoreFoundation 0x017d7ac3 CFRunLoopRunSpecific + 467
24 CoreFoundation 0x017d78db CFRunLoopRunInMode + 123
25 GraphicsServices 0x037879e2 GSEventRunModal + 192
26 GraphicsServices 0x03787809 GSEventRun + 104
27 UIKit 0x00239d3b UIApplicationMain + 1225
28 CourseFindr 0x0000768d main + 141
29 libdyld.dylib 0x01e6e725 start + 0
)
libc++abi.dylib: terminating with uncaught exception of type NSException
最佳答案
因为您要混合表格 View (尤其是带有原型(prototype)单元格的表格 View ),所以事情会变得有点棘手。
为了简化您的代码,我建议将它们创建为单独的 UIViewController 子类,然后将一个作为 subview Controller 添加到另一个,这样它们就会有自己的委托(delegate),并且不会混淆上。
关于ios - UITableViewController 中的 UITableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21204368/
我正在使用 Swift 制作一个应用程序,但遇到了一个问题:我有一个系统,人们可以在其中发布“帖子”,并对这些“帖子”发表评论。 为了显示这一点,我有一个 UITableViewController
用户点击“远程”按钮,然后加载以下 UITableViewController: 然后用户选择我调用的任何值: [self.navigationController popViewController
在我离开页面并使用 UITabBarController 返回后,我的 TableViewController 在页面顶部留下了一个空隙。在初始加载时它很好,只有当我离开页面然后返回时才会出现间隙。我
我有一个 TableViewController (VC1) 设置为推送到另一个 TableViewController (VC2)。这个连接是通过从 VC1 到 VC2 的 ctrl-drag 在
在我的核心数据模型中,我有一个 Person 实体,它与 Course 实体具有“对多”关系(我还具有从 Course 到 Person 的反向“对一”关系)。 现在我有一个子类化的 UITableV
为什么不调用 numberOfSectionsInTableView 方法?如果我在 viewDidLoad 中添加 [self.tableView reloadData],它就会被调用,但即便如此,
在 UITableViewController 中,我有一个方法可以更新显示总价的底部工具栏。 public override UITableViewCell GetCell(UITa
我正在制作一个 iPad 应用程序,其中包含一个用于设置选项的 View 。这个“选项” View 有两个容器 View ,每个容器 View 都包含一个 TableView,其中包含两种不同的选项,
假设设置是 导航 Controller -> GradLevelUITableViewController -> DegreeUITableViewController -> View Control
我的问题是,这是否可能,如果可能,您将如何完成这项任务? 有人知道已经在使用此功能的应用程序,或者可以从哪里获得一些示例代码吗? 此外,如果我要在对主题了解不多的情况下自行实现此操作,您估计需要多长时
当 UITableViewController 的框架低于特定高度时,UITableViewController refreshControl 会出现问题。 就目前而言,我有一个 UIViewCont
我有我的主视图和一个 RoutinesTableViewController。 我想放松回到我的 VC 并尝试了这个: @IBAction func selectRoutine(segue:UISto
我是 swift 和 Xcode 的新手,我正在尝试一些事情。当我转到设置页面时,我想在设置页面(在应用程序中,而不是在设置 bundle 中)设置开关状态。 (我将segue设置为push)为此,我
我目前正在尝试将不同的实体从我的 CoreData 模型加载到一个 UITableView 中,但位于不同的部分下。我尝试过以下方法: override func tableView(tableVie
我试图让 tableview 适应 Swift 中键盘的显示。根据文档,如果 tableview 是 UITableViewController 的子类,它应该自动调整。已经在这里阅读了很多答案,只是
我想捕获UITableViewController中触摸点的x位置。网上描述的最简单的解决方案是UITapGestureRecognizer:enter link description here 但
我是 iPhone 编程的初学者。我的第一个应用程序是 UITableViewController 但现在我想尝试一下。这个想法是创建一个如下所示的自定义布局: 布局: ---------------
我有一个基于导航的应用程序,我将 UITableViewControllers 推送到堆栈上。我想向我的所有 UITableViewControllers 添加背景 UImage。不是 UIColor
在找到位置后,我尝试在 UITableViewController 中重新加载数据。这也意味着在 viewDidLoad 方法之后。我的类正在使用此接口(interface)扩展 UITableVie
我有一个TabBarController,其中一个选项卡包含一个 subview ,它是一个navigationController。然后,我将继承 UITableViewController 形式的
我是一名优秀的程序员,十分优秀!