1

したがって、rightbarbuttonitem が消えるという問題があります。このビューを読み込むには 2 つの方法があります。最初の起動時に、ユーザーが (最初のビューから) 名前を入力した後に読み込まれます。2 回目 (アプリの終了後) に、保存されているデータベースに名前が存在するかどうかを確認し、存在する場合はすぐにビューを読み込みます。この 2 回目は、ボタンが表示されない場所です。

ボタンは、もともとここにあるビューの viewDidLoad に設定されていました (最初の読み込みではまだここに設定されています)。

if (self.navigationItem.rightBarButtonItem == nil){
    addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(buttonPressed)];
    self.navigationItem.rightBarButtonItem = addButton;
    [self.navigationItem.rightBarButtonItem retain];
}  

次に、AppDelegate の .m に、2 回目の読み込みで解決されると考えるボタンを追加しました。

if(success){
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    UIViewController *control = [[ViewController alloc] initWithNibName:@"myNib" bundle:nil];
    [control retain];
    UINavigationController *navControl = [[UINavigationController alloc] initWithRootViewController:control];

    [navControl retain];
    [self.window setRootViewController:navControl];

    if (navControl.navigationItem.rightBarButtonItem == nil){
        addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(buttonPressed)];
        navControl.navigationItem.rightBarButtonItem = addButton;
        [navControl.navigationItem.rightBarButtonItem retain];
    }
    //[navControl release];
    [self.window makeKeyAndVisible];
    return;

App Delegate のヘッダーとビューのヘッダーでの addButton の宣言は次のとおりです。

UIBarButtonItem *addButton;

@property (nonatomic, retain) UIBarButtonItem *addButton

他の投稿では、viewDidLoad/viewWillAppear をチェックするように言われていますが、最初のコードの宣伝文句をそれらのいずれかに入れても問題は解決しません。

4

1 に答える 1

0

ボタンがペン先に追加されなかったため、自分で解決しました。 UIViewController を初期化しても役に立ちません。ビューコントローラーを初期化する必要がありました。

言い換えれば、replace: UIViewController *control = [[ViewController alloc] initWithNibName:@"myNib" bundle:nil];with:MyViewControllerClassName *control = [[MyViewControllerClassName alloc] initWithNibName:@"myNib" bundle:nil];これが将来他の人に役立つことを願っています。

于 2013-03-17T07:37:48.640 に答える