我正在实现 iOS 14 (iPadOS 14) 侧边栏(带有 TripleColumn 的 UISplitViewController)并且有奇怪的“侧边栏切换图标”行为。在 iOS 13 中,我使用带有一些拆分视图和表格视图的标签栏,所以我需要三列而不是双列才能工作。
并且有一些选项卡只有一列(在 iOS 13 中,它是一个表视图而不是拆分视图)。我将补充视图设置为 nil,并通过调用在 iOS 14 中实现的“隐藏”方法来隐藏视图。(代码见下文):
自动显示左上角的“侧边栏切换图标”。单击切换图标后,侧边栏正确隐藏,但在我的辅助视图上创建了一个“后退按钮”(嵌入在 UINavigationController 中的 UITableViewController):
按(单击)后退按钮没有反应。用户仍然可以从屏幕的左边缘滑动以使侧边栏重新出现,但“后退按钮”令人困惑。我的预期行为是,在侧栏中选择切换图标后,在辅助视图中显示“侧栏切换图标”而不是“后退按钮”。在辅助视图中按下“侧边栏切换图标”后,侧边栏重新出现。
与 iOS 14 (iPadOS 14) 中的照片应用程序一样,显示的是切换按钮而不是后退按钮。单击切换图标将使侧边栏再次显示。(但它是一个双列拆分视图)
我的代码:
SceneDelegate.swift:
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
if let windowScene = scene as? UIWindowScene {
let window = UIWindow(windowScene: windowScene)
if #available(iOS 14.0, *) {
let main = UIStoryboard(name: "Main", bundle: nil)
let splitViewController = UISplitViewController(style: .tripleColumn)
splitViewController.preferredDisplayMode = .twoBesideSecondary
splitViewController.preferredSplitBehavior = …
Run Code Online (Sandbox Code Playgroud) 实际上我的原始代码适用于Xcode 5.0.2,也非常适合发送到App Store,它是:
objc_msgSend(self.target, self.successAction, category);
Run Code Online (Sandbox Code Playgroud)
此行导致Xcode5.1 beta5崩溃.我找到了修复崩溃的解决方案: SudzC ARC版本 - objc_msgSend调用使用64位架构导致EXC_BAD_ACCESS
// solution
id (*response)(id, SEL, id) = (id (*)(id, SEL, id)) objc_msgSend;
response(self.target, self.successAction, category);
Run Code Online (Sandbox Code Playgroud)
在使用推荐的解决方案时,使用Xcode 5或Xcode5.1beta在设备(iPhone 5s)或模拟器(32位或64位)上进行测试时完全没有问题.构建设置中的体系结构设置是Xcode 5中的"标准体系结构(armv7,armv7s)"和"标准体系结构(armv7,armv7s,arm64)".
但是,我的新版应用程序已于今天在App Store上发售.它会在安装的每台设备(iPhone 5s,5,4s)上崩溃(根据Crashlytics报告).由于我没有使用Xcode(构建到真实设备)获得崩溃,我不知道在Apple审核之前我是否解决了这个问题.
BKObject 是一个自定义对象,我想将多个 BKObject 放入一个数组中。
BK视图控制器:
#import <UIKit/UIKit.h>
#import "BKObject.h"
@interface BKViewController : UIViewController
@property (strong, nonatomic) NSArray *data;
@property (weak, nonatomic) BKObject *tmpObject;
@end
Run Code Online (Sandbox Code Playgroud)
BKViewController.m:
#import "BKViewController.h"
@implementation BKViewController
- (void)viewDidLoad
{
[super viewDidLoad];
NSMutableArray *arr = [[NSMutableArray alloc] init];
for(NSInteger i = 0; i < 100000; i++){
[arr addObject:[[BKObject alloc] initWithName:@""]];
}
self.data = [NSArray arrayWithArray:arr];
__weak BKObject *weakMutableObject = arr[0];
[arr removeAllObjects];
NSLog(@"%@", weakMutableObject); // print out the object, why?
__weak BKObject *weakObject = self.data[0];
self.data = nil; …
Run Code Online (Sandbox Code Playgroud) HTML:
<div id="container">
<div class="desc">desc</div>
<a href="foo.php">foo</a>
</div>
Run Code Online (Sandbox Code Playgroud)
JS:
$('#container').click(function(){
...
my_function();
...
});
Run Code Online (Sandbox Code Playgroud)
当用户单击除a标记之外的容器内部时,此方法有效.
如果用户单击标记,则会触发单击事件.但是,我想禁用标签的自定义单击功能.也就是说,链接到没有onlick事件的页面.
这不起作用:
$('#container :not(a)').click();
Run Code Online (Sandbox Code Playgroud) 当它是一个普通的jquery移动页面时,我可以使用以下代码作为onload函数:
$(document).delegate("#page", "pageinit", function(){});
Run Code Online (Sandbox Code Playgroud)
但是,当页面作为对话框(使用)打开时,它不起作用.我怎样才能捕获onload事件?
如果"content"包含没有空格的长字符串,它将溢出div("topic").我怎么能解决这个问题?
现场演示在这里:http://jsfiddle.net/w87Vz/
HTML:
<div class="topic">
<div class="content">a longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong string</div>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
.topic{
background:#ddd;
margin: 0 auto;
position: relative;
display: block;
width: 300px;
}
Run Code Online (Sandbox Code Playgroud) 我在这里尝试了解决方案,但它不起作用.
我的桌子是这样的:
`Index` uid dept
...........................
1 001 dept1
2 001 dept2
3 001 dept3
4 002 dept2
5 002 dept3
6 002 dept4
7 003 dept1
8 003 dept5
9 004 dept1
10 004 dept6
Run Code Online (Sandbox Code Playgroud)
我想要检索具有特定的所有行dept
.也就是说,如果我想要检索dept1
,我想检索除uid = 002之外的所有行,因为dept1
uid = 002 没有.
即使使用索引,查询字符串也很慢:
SELECT id FROM table WHERE uid IN
(SELECT uid WHERE dept='dept1')
Run Code Online (Sandbox Code Playgroud)
我之前没有使用WHERE IN的版本如下:
首先使用dept = dept1检索所有uid.
然后对第一个查询中检索到的所有uid使用for循环.
对于在第一个查询中检索的少量(100)行,此方法非常快.但是,它似乎不是一个好的解决方案,因为它会产生大量的查询(每个查询都非常快).