'SpringBoard' 可能不响应 presentViewController
'SpringBoard' may not respond to presentViewController
我目前正在尝试对 iOS 9.3.3 进行非常简单的基线调整,以便在 Springboard 启动时显示一条消息。它一直给我这个错误,我不知道如何纠正它。任何帮助将不胜感激。我不使用 UIAlertView
的原因是它已被弃用。
错误:
> Making all for tweak UIAlertControllerTest
==> Preprocessing Tweak.xm
==> Compiling Tweak.xm (armv7)
Tweak.xm:9:8: error: 'SpringBoard' may not respond to
'dismissViewControllerAnimated:completion:' [-Werror]
[self dismissViewControllerAnimated:YES completion:nil];
~~~~ ^
Tweak.xm:12:8: error: 'SpringBoard' may not respond to
'presentViewController:animated:completion:' [-Werror]
[self presentViewController:alertController animated:YES complet...
~~~~ ^
2 errors generated.
make[3]: *** [/home/theodd/Desktop/uialertcontrollertest/.theos/obj/debug/armv7/Tweak.xm.ae1dfb2c.o] Error 1
make[2]: *** [/home/theodd/Desktop/uialertcontrollertest/.theos/obj/debug/armv7/UIAlertControllerTest.dylib] Error 2
make[1]: *** [internal-library-all_] Error 2
make: *** [UIAlertControllerTest.all.tweak.variables] Error 2
Tweak.xm:
#import <SpringBoard/SpringBoard.h>
%hook SpringBoard
-(void)applicationDidFinishLaunching:(id)application {
%orig;
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"TestTitle" message:@"TestMessage" preferredStyle:UIAlertControllerStyleAlert];
[alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
[self dismissViewControllerAnimated:YES completion:nil];
}]];
[self presentViewController:alertController animated:YES completion:nil];
}
%end
SpringBoard
是 FBSystemApp
,推而广之,UIApplication
的子类,而不是 UIViewController
。方法 -presentViewController:animated:completion:
是一个 UIViewController
实例方法,因此您想从一个实例方法中调用它。
我建议您阅读一些有关 类 工作原理的文章,基本的 Objective-C 内容不一定是特定于越狱的。
或者只使用 UIAlertView 直到它们被弃用。例如
UIAlertView *a = [[UIAlertView alloc] initWithTitle:@"This is a title" message:@"This is a message" delegate:nil cancelButtonTitle:@"Ok!" otherButtonTitles:nil];
[a show];
[a release];
伙计们,我成功了!如果您对工作代码和 Makefile 是什么感到好奇:
Tweak.xm
#import <SpringBoard/SpringBoard.h>
%hook SpringBoard
-(void)applicationDidFinishLaunching:(id)application {
%orig;
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"TestTitle" message:@"TestMessage" preferredStyle:UIAlertControllerStyleAlert];
[alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
[self.keyWindow.rootViewController dismissViewControllerAnimated:YES completion:NULL];
}]];
[self.keyWindow.rootViewController presentViewController:alertController animated:YES completion:NULL];
}
%end
生成文件
GO_EASY_ON_ME=1
export ARCHS = armv7 arm64
export TARGET = iphone:clang:9.3:9.3
include $(THEOS)/makefiles/common.mk
TWEAK_NAME = UIAlertControllerTest
UIAlertControllerTest_FRAMEWORKS = UIKit
UIAlertControllerTest_FILES = Tweak.xm
include $(THEOS_MAKE_PATH)/tweak.mk
after-install::
install.exec "killall -9 SpringBoard"
我目前正在尝试对 iOS 9.3.3 进行非常简单的基线调整,以便在 Springboard 启动时显示一条消息。它一直给我这个错误,我不知道如何纠正它。任何帮助将不胜感激。我不使用 UIAlertView
的原因是它已被弃用。
错误:
> Making all for tweak UIAlertControllerTest
==> Preprocessing Tweak.xm
==> Compiling Tweak.xm (armv7)
Tweak.xm:9:8: error: 'SpringBoard' may not respond to
'dismissViewControllerAnimated:completion:' [-Werror]
[self dismissViewControllerAnimated:YES completion:nil];
~~~~ ^
Tweak.xm:12:8: error: 'SpringBoard' may not respond to
'presentViewController:animated:completion:' [-Werror]
[self presentViewController:alertController animated:YES complet...
~~~~ ^
2 errors generated.
make[3]: *** [/home/theodd/Desktop/uialertcontrollertest/.theos/obj/debug/armv7/Tweak.xm.ae1dfb2c.o] Error 1
make[2]: *** [/home/theodd/Desktop/uialertcontrollertest/.theos/obj/debug/armv7/UIAlertControllerTest.dylib] Error 2
make[1]: *** [internal-library-all_] Error 2
make: *** [UIAlertControllerTest.all.tweak.variables] Error 2
Tweak.xm:
#import <SpringBoard/SpringBoard.h>
%hook SpringBoard
-(void)applicationDidFinishLaunching:(id)application {
%orig;
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"TestTitle" message:@"TestMessage" preferredStyle:UIAlertControllerStyleAlert];
[alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
[self dismissViewControllerAnimated:YES completion:nil];
}]];
[self presentViewController:alertController animated:YES completion:nil];
}
%end
SpringBoard
是 FBSystemApp
,推而广之,UIApplication
的子类,而不是 UIViewController
。方法 -presentViewController:animated:completion:
是一个 UIViewController
实例方法,因此您想从一个实例方法中调用它。
我建议您阅读一些有关 类 工作原理的文章,基本的 Objective-C 内容不一定是特定于越狱的。
或者只使用 UIAlertView 直到它们被弃用。例如
UIAlertView *a = [[UIAlertView alloc] initWithTitle:@"This is a title" message:@"This is a message" delegate:nil cancelButtonTitle:@"Ok!" otherButtonTitles:nil];
[a show];
[a release];
伙计们,我成功了!如果您对工作代码和 Makefile 是什么感到好奇:
Tweak.xm
#import <SpringBoard/SpringBoard.h>
%hook SpringBoard
-(void)applicationDidFinishLaunching:(id)application {
%orig;
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"TestTitle" message:@"TestMessage" preferredStyle:UIAlertControllerStyleAlert];
[alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
[self.keyWindow.rootViewController dismissViewControllerAnimated:YES completion:NULL];
}]];
[self.keyWindow.rootViewController presentViewController:alertController animated:YES completion:NULL];
}
%end
生成文件
GO_EASY_ON_ME=1
export ARCHS = armv7 arm64
export TARGET = iphone:clang:9.3:9.3
include $(THEOS)/makefiles/common.mk
TWEAK_NAME = UIAlertControllerTest
UIAlertControllerTest_FRAMEWORKS = UIKit
UIAlertControllerTest_FILES = Tweak.xm
include $(THEOS_MAKE_PATH)/tweak.mk
after-install::
install.exec "killall -9 SpringBoard"