根据 tableview 选择加载特定的 NIB
Posted
技术标签:
【中文标题】根据 tableview 选择加载特定的 NIB【英文标题】:Load a particular NIB based on tableview selection 【发布时间】:2010-07-23 12:41:59 【问题描述】:我创建了一个初始表格视图,作为我的应用程序中的初始菜单。显然,每个选项都会访问不同的东西,包括 NIB。菜单选项的部分常量是 NIB。当从 PLIST 中提取每个选项时,我还包括我希望调用的 NIB。
我是错过了什么,还是我完全走错了路?
现在选择什么都不做。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
NSMutableString *targetnib = [[self.menuoptions objectAtIndex:indexPath.row] objectForKey:NIB_KEY];
if (targetnib == @"HospitalDirectoryViewController")
HospitalDirectoryViewController *hospitalDirectoryViewController = [[HospitalDirectoryViewController alloc] initWithNibName:@"HospitalDirectoryViewController" bundle:nil];
// ...
// Pass the selected object to the new view controller.
[self.navigationController pushViewController:hospitalDirectoryViewController animated:YES];
[hospitalDirectoryViewController release];
if (targetnib == @"PhysicianDirectoryViewController")
PhysicianDirectoryViewController *physicianDirectoryViewController = [[PhysicianDirectoryViewController alloc] initWithNibName:@"PhysicianDirectoryViewController" bundle:nil];
// ...
// Pass the selected object to the new view controller.
[self.navigationController pushViewController:physicianDirectoryViewController animated:YES];
[physicianDirectoryViewController release];
【问题讨论】:
【参考方案1】:尝试使用 [targetnib isEqualToString: @"TheNibName"]。在您发布的代码中,您是在比较指针,而不是文本。
【讨论】:
这是有道理的。但是,由于它期望 ( and ) 我尝试了 if ([targetnib isEqualtoString:@"DirectoryViewController"]) 我收到了可能没有响应的警告,并且它在运行时崩溃了。所以这似乎是正确的方法,我仍然在某个地方弄乱了语法。 也许您只是在评论中输入了错误,但请确保选择器是 isEqualToString: 而不是 isEqualtoString:,就像您输入的那样。 另外...您将其键入为 NSMutableString 而不是 NSString 是否有特定原因? NSMutableString 将安全地转换为 NSString,但反之亦然(如果您真的希望字符串可变,则需要制作 mutableCopy)。 我把它改回了 NSString。不知道为什么我做了可变的。大小写的变化 isEqualtoString ---> isEqualToString 修复了它。小小的疏忽让我着迷。以上是关于根据 tableview 选择加载特定的 NIB的主要内容,如果未能解决你的问题,请参考以下文章
如果用户允许或拒绝获取当前位置,则重新加载 TableView 数据
从 AppDelegate Swift 4 更新 tableView 行
根据单元格选择,使用 NSArray 中的选择对象重新加载 UITableView