我正在考虑这种奇怪的行为.当应用等待某些信息时,我正在使用带有文本的面板向用户显示.此面板以模态显示以防止用户单击某些内容.
隐藏加载面板时,工具栏上的所有项都将被禁用,并且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.我在想其他问题......
我有一个只有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始终是零.
谢谢
我注意到你可以用这种方式"双重声明"一个变量:
@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)
为什么编译器不会在这种情况下抱怨?
我有一个非常简单的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)
问题是小部件出现在模拟器屏幕中但没有任何文本.我敢肯定,这是我弄乱的东西,但我找不到它是什么......