小编Bru*_*sso的帖子

如何强制NSToolBar验证?

我正在考虑这种奇怪的行为.当应用等待某些信息时,我正在使用带有文本的面板向用户显示.此面板以模态显示以防止用户单击某些内容.

隐藏加载面板时,工具栏上的所有项都将被禁用,并且validateToolbarItem不会调用该方法.

我正以这种方式展示小组:

- (void)showInWindow:(NSWindow *)mainWindow {
 sheetWindow = [self window];
 [self sheetWillShow];

 [NSApp beginSheet:sheetWindow modalForWindow:mainWindow modalDelegate:nil didEndSelector:nil contextInfo:nil];
 [NSApp runModalForWindow:sheetWindow];
 [NSApp endSheet:sheetWindow];
 [sheetWindow orderOut:self]; 
}

- (void)dismissModal {
 [sheetWindow close];
 [NSApp stopModal];
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,如何强制工具栏进行验证?

评论后编辑:

我已经尝试过了:

  • [[[NSApp mainWindow] toolbar] validateVisibleItems]
  • [[NSApp mainWindow] update];
  • [NSApp updateWindows];
  • [NSApp setWindowsNeedUpdate:YES];

所有电话结束后dismissModal.我在想其他问题......

macos cocoa modal-dialog toolbar

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

如何显示从xib加载的工作表?(MACOSX)

我有一个只有NSPanel的xib文件,我试图将此面板显示为模态表(带beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo:).该xib的文件所有者是一个控制器类"MyController",它具有NSPanel的IBOutlet.

我正在寻找的是:

...
MyController *controller = [[MyController alloc] init];

[NSApp beginSheet:controller.panel modalForWindow:[NSApp mainWindow] modalDelegate:controller didEndSelector:nil contextInfo:nil];
...
Run Code Online (Sandbox Code Playgroud)

问题:MyController必须继承自NSWindowController还是NSObject?我试过了NSWindowController,initWithWindowNibName:但出口NSPanel始终是零.

谢谢

macos cocoa nswindow nswindowcontroller

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

属性和实例变量声明

我注意到你可以用这种方式"双重声明"一个变量:

@interface A {
    NSString *instanceVariable;
}
@property (nonatomic, retain) NSString *instanceVariable;
@end
Run Code Online (Sandbox Code Playgroud)

这与以下情况具有相同的效果:

@interface A {
}
@property (nonatomic, retain) NSString *instanceVariable;
@end
Run Code Online (Sandbox Code Playgroud)

为什么编译器不会在这种情况下抱怨?

objective-c

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

android TextView.setText不适用于简单的小部件

我有一个非常简单的AppWidgetProvider用于测试小部件:

public class Test extends AppWidgetProvider {

    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds){
        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.test_layout);
        views.setTextViewText(R.id.TextView01, "Test message");
    }

}
Run Code Online (Sandbox Code Playgroud)

test_layout如下所示:

<LinearLayout 
    android:id="@+id/LinearLayout01"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android">
    <TextView
        android:id="@+id/TextView01" 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
    </TextView>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

问题是小部件出现在模拟器屏幕中但没有任何文本.我敢肯定,这是我弄乱的东西,但我找不到它是什么......

android android-widget android-emulator

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