PreferenceBundleで右上にRespringボタンをつける。


PreferenceBundleで右上にRespringボタンをつける。

初めまして、Minazukiと申します。

Profile
Name : Minazuki_dev
Twitter : @Minazuki_dev
Repo : https://minazukidev.github.io
Age : 14

まだ中学生なので言葉がおかしいところがありますが許してください…🙏

はじめに

必要なもの

theos (Macでも単体でもなんでも)
Newterm2
Filza
やる気

$THEOS/bin/nic.plでTweakを作成してそのTweakのPreferenceBundleをまた$THEOS/bin/nic.plで作成しておいてください。

本題

さぁ、右上にリスプリングボタンをつけていきましょう。上手くいくとこうなります。

"Respring"とボタンが表示されていますね。

まず初めにTweakの方のMakefileを開いてください。

Makefile
$(TWEAK_NAME)_EXTRA_FRAMEWORKS = Cephei

を記述します。記述するところは
TWEAK_NAME = XXXの下あたりがわかりやすいでしょう。
$(TWEAK_NAME)の部分をTweakの名前にしてもいいと思いますが今回はこの記述でいきます。Cepheiをインストールしてない場合はPackixリポジトリからインストールしておきましょう。

次にPreferenceBundleの方のMakefileを開いてください。そこにも新たに記述するものがあります。

Makefile
$(TWEAK_NAME)_EXTRA_FRAMEWORKS = Cephei CepheiPrefs

CepheiPrefsが加わっただけですね!!
BUNDLE_NAME = XXXから下のわちゃわちゃしたところの1番下に追加記述でいいでしょう。

そして次に"XXXRootListController.m"
にこれを追加記述します。

XXXRootListController.m
@synthesize respringButton;

- (instancetype)init {
    self = [super init];

    if (self) {
        HBAppearanceSettings *appearanceSettings = [[HBAppearanceSettings alloc] init];
        appearanceSettings.tintColor = [UIColor colorWithRed:0.1f green:0.1f blue:0.1f alpha:1];
        appearanceSettings.tableViewCellSeparatorColor = [UIColor colorWithWhite:0 alpha:0];
        self.hb_appearanceSettings = appearanceSettings;
        self.respringButton = [[UIBarButtonItem alloc] initWithTitle:@"Respring" 
                                    style:UIBarButtonItemStylePlain
                                    target:self 
                                    action:@selector(resp)];
        self.respringButton.tintColor = [UIColor redColor];
        self.navigationItem.rightBarButtonItem = self.respringButton;
    }

    return self;
}

@implementation XXXRootListControllerの下(specifiersとか書いてあるところとの間)に記述しましょう。

そして次にrespringさせるコードを書くのですがこれは調べたらゴロゴロ出てくるので省略させていただきます🙏
注意点としてこのカードを丸々コピーする場合
"-(void)resp"と(void)の先がrespになるようにしていただければ大丈夫です。

そして最後にXXXRootListController.hにこれを追加記述します。

XXXRootListController.h
#import <Preferences/PSListController.h>
#import <Preferences/PSSpecifier.h>
#import <CepheiPrefs/HBRootListController.h>
#import <CepheiPrefs/HBAppearanceSettings.h>
#import <Cephei/HBPreferences.h>

@interface NSTask : NSObject
@end

@interface XXXRootListController : PSListController
    @property (nonatomic, retain) UIBarButtonItem *respringButton;
    - (void)resp;
@end

追加記述というよりは初期の状態なら全消ししてこれをコピペすれば大丈夫です。
これで完成なのでビルドしてインストールしてみましょう。

まとめ

とりあえずこれで右上にRespringボタンのつけ方は終わりです。なにか質問があったら(誤字脱字も!)TwitterのDMに来てください。

今回はボタンの色を赤としましたが他の色にすることも可能です。また、応用編としてRespringする前にアラートを表示させたり、RespringではなくTwitterに飛ばしたりすることもできます。需要があればまた何か応用編を投稿するかもしれません。

追記
使用しているtheosのバージョンによってエラーが出る可能性があります。