小编ben*_*nck的帖子

带有三列侧边栏切换图标行为的 iOS 14 UISplitViewController(侧边栏)

我正在实现 iOS 14 (iPadOS 14) 侧边栏(带有 TripleColumn 的 UISplitViewController)并且有奇怪的“侧边栏切换图标”行为。在 iOS 13 中,我使用带有一些拆分视图和表格视图的标签栏,所以我需要三列而不是双列才能工作。

例如,在“航班”选项卡中使用侧边栏需要三列: 带有三列的 iOS 14 侧边栏示例

并且有一些选项卡只有一列(在 iOS 13 中,它是一个表视图而不是拆分视图)。我将补充视图设置为 nil,并通过调用在 iOS 14 中实现的“隐藏”方法来隐藏视图。(代码见下文): 带有三列但隐藏补充列的 iOS 14 侧边栏示例

自动显示左上角的“侧边栏切换图标”。单击切换图标后,侧边栏正确隐藏,但在我的辅助视图上创建了一个“后退按钮”(嵌入在 UINavigationController 中的 UITableViewController): 单击切换图标后的 iOS 14 侧边栏示例

按(单击)后退按钮没有反应。用户仍然可以从屏幕的左边缘滑动以使侧边栏重新出现,但“后退按钮”令人困惑。我的预期行为是,在侧栏中选择切换图标后,在辅助视图中显示“侧栏切换图标”而不是“后退按钮”。在辅助视图中按下“侧边栏切换图标”后,侧边栏重新出现。

与 iOS 14 (iPadOS 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)

sidebar uisplitviewcontroller swift ipados ios14

7
推荐指数
1
解决办法
1456
查看次数

使用64位arm64构建时,obj_msgSend函数指针崩溃

实际上我的原始代码适用于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审核之前我是否解决了这个问题.

crash 64-bit objective-c ios7 arm64

5
推荐指数
1
解决办法
1973
查看次数

NSArray 或 NSMutableArray 使用 ARC 可能存在内存泄漏

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)

memory-leaks objective-c nsmutablearray nsarray ios

4
推荐指数
1
解决办法
6535
查看次数

使用onclick事件解锁div内的'a'的onclick事件

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 onclick

2
推荐指数
2
解决办法
3205
查看次数

使用jquery移动对话框时如何捕获onload事件?

当它是一个普通的jquery移动页面时,我可以使用以下代码作为onload函数:

$(document).delegate("#page", "pageinit", function(){});
Run Code Online (Sandbox Code Playgroud)

但是,当页面作为对话框(使用)打开时,它不起作用.我怎样才能捕获onload事件?

dialog onload jquery-mobile

2
推荐指数
1
解决办法
4387
查看次数

一个长字符串溢出一个div容器

如果"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)

html css overflow

1
推荐指数
1
解决办法
1532
查看次数

SELECT WHERE IN(子查询)慢

我在这里尝试了解决方案,但它不起作用.

我的桌子是这样的:

   `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之外的所有行,因为dept1uid = 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)行,此方法非常快.但是,它似乎不是一个好的解决方案,因为它会产生大量的查询(每个查询都非常快).

mysql performance select subquery where-clause

0
推荐指数
1
解决办法
6387
查看次数