Как удалить предмет из TTLauncher / Three20? - PullRequest
0 голосов
/ 30 августа 2011

как удалить элемент после добавления в массив страниц?

Я попробовал это здесь:

 launcherView.pages = [NSArray arrayWithObjects:
                      [NSArray arrayWithObjects:
                       [self launcherItemWithTitle:@"Pers. Starts."
                                             image:@"bundle://animexx-72.png"
                                               URL:@"tt://startseite"],
                       [self launcherItemWithTitle:@"ENS"
                                             image:@"bundle://animexx-72.png"
                                               URL:@"tt://ens"],
                       [self launcherItemWithTitle:@"Kontakte"
                                             image:@"bundle://animexx-72.png"
                                               URL:@"tt://kontakte"],
                       [self launcherItemWithTitle:@"Einstellungen"
                                             image:@"bundle://animexx-72.png"
                                               URL:@"tt://einstellungen"],
                       [self launcherItemWithTitle:@"Admin"
                                             image:@"bundle://animexx-72.png"
                                               URL:@"tt://admin"]
                       , nil]
                      , nil];


//Check if ENS-Admin enabled
if ([SelfViewHandler IsENSAdminSet])
{
    TTLauncherItem* item;
    item = [launcherView itemWithURL:@"tt://admin"];

    [launcherView removeItem:item animated:false];
}

Но Предмет все еще там. (If-Clause верно, проверил его в отладчике и точке останова)

1 Ответ

1 голос
/ 30 августа 2011

Объект item = [launcherView itemWithURL:@"tt://admin"] на самом деле не существует в вашем TTLauncherView и не может быть удален из-за этого.

Каждый объект получает ссылку при создании, поэтому объект, который вы добавляете при создании массива страниц, и объект, который вы создаете в своем операторе if, отличаются.

Чтобы удалить объект из TTLauncherView, вам нужна ссылка на него. Вы можете сделать что-то подобное:

TTLauncherItem* item = [self launcherItemWithTitle:@"Admin"
                                         image:@"bundle://animexx-72.png"
                                           URL:@"tt://admin"]

launcherView.pages = [NSArray arrayWithObjects:
                      [NSArray arrayWithObjects:
                       [self launcherItemWithTitle:@"Pers. Starts."
                                             image:@"bundle://animexx-72.png"
                                               URL:@"tt://startseite"],
                       [self launcherItemWithTitle:@"ENS"
                                             image:@"bundle://animexx-72.png"
                                               URL:@"tt://ens"],
                       [self launcherItemWithTitle:@"Kontakte"
                                             image:@"bundle://animexx-72.png"
                                               URL:@"tt://kontakte"],
                       [self launcherItemWithTitle:@"Einstellungen"
                                             image:@"bundle://animexx-72.png"
                                               URL:@"tt://einstellungen"],
                       adminLauncherItem
                       , nil]
                      , nil];


//Check if ENS-Admin enabled
if ([SelfViewHandler IsENSAdminSet])
{
    [launcherView removeItem:adminLauncherItem animated:false];
}

Имеет смысл иметь функцию, которая удаляет элемент запуска на основе URL, например

- (void)removeItemWithURL:(NSURL*)url animated:(BOOL)animated {

(но пока нет :-))

...