iPhone Storyboard Кесте көрінісін өңдеу

Мен Xcode-те жаңа Storyboard мүмкіндігін үйренуге тырысамын және өңдеу режиміне UITableView орнатуға тырысқанымда проблемаға айналды.

Әлі күнге дейін менің сюжеттік үстелім мынаған ұқсайды:

NavigationController -> UIViewController (subclass with tableview property)

Мен Навигация элементін және Бар түймешігі элементін көрініс контроллері сценарийіне қосқан болатынмын, сондықтан өңдеу батырмасын көріп тұрмын. Ол автоматтық түрде ештеңе жасамады, сондықтан мен оны селекторды tableview делегінің setEditing әдісіне байланыстыруға тырыстым. Бұл оны редакциялау режиміне қойды. Дегенмен, редакциялау түймешігі «Дайын» ​​батырмасына өзгерген жоқ, сондықтан редакциялау режимінен шығуға ешқандай мүмкіндік жоқ.

Дайын батырмасы үшін басқа навигация элементін жасау керек пе? Оны өз уақытында пайда болатын және дұрыс жұмыс істейтін етіп қалай қосамын?

9

7 жауаптар

өңдеу/аяқтау батырмасын іске қосудың жалғыз жолы (сенімді, ең қарапайым), келесі кодты пайдалану болып табылады:

- (void)viewDidLoad
{
[super viewDidLoad];
...
//set the edit button
self.navigationItem.leftBarButtonItem = self.editButtonItem;
...

Бұл жоба үшін «Master-Detail Application» үлгісін таңдасаңыз, Apple өзі жүзеге асыратын шешім.

Мүмкін Storyboard әлі де кемелсіз және үміттенемін, ол келесі релиздерде Apple-ден жақсарады ...

27
қосылды

Мен жай ғана тақтайшаларды қолдануға кірісіп кеттім, сондықтан мен де Өңдеу түймешігін қосу үшін Сюжеттер тақтасын қолданғым келді. Жаңа құралды қалай қолдануды үйрену үшін уақыт бөліп, бірақ саңылауларды түзету үшін сізге арналы қағаз таспасын қажет деп тапсаңыз, тітіркендіреді.

Сіз оны жұмысқа ала аласыз, бірақ Custom түймешігін басуыңыз керек. Атрибуттар инспекторында сәйкестендіргіш - таңдамалы және тақырып - бұл Өңдеу.

Сонда сіздің .m

- (IBAction)setEditMode:(UIBarButtonItem *)sender {
    if (self.editing) {
        sender.title = @"Edit";
        [super setEditing:NO animated:YES];
    } else {
        sender.title = @"Done";
        [super setEditing:YES animated:YES];
    } 
}

Custom Edit батырмасын setEditMode әдісін шақырыңыз.

Болашақта Storyboard редакторындағы Өңдеу батырмасын қолдануды түзетеді деп үміттене алады.

13
қосылды
6 жыл өткен соң ... Ол әлі бекітілген жоқ.
қосылды автор gone, көзі

Қорытындылай келе:

UIViewController.editButtonItem арқылы қайтарылған түйме - - (void) setEditing: (BOOL) анимацияланған: (BOOL) animated .

UINavigationController.editButtonItem арқылы қайтарылған түйме - жай ғана «Өңдеу» деп белгіленген қарапайым батырма.

Стартборд соңғы нұсқасын таңдауға мүмкіндік береді.

6
қосылды

Көріністі контроллерге итеру үшін навигациялық контроллерді пайдалансаңыз, оң жақта әдепкі өңдеу түймешігін орнататын self.navigationItem.rightBarButtonItem = self.editButtonItem; параметрін орнатыңыз. Егер шарлау тақтасы көрінбесе, self.navigationController.navigationBarHidden = NO қоңырау шалыңыз. Олар viewDidLoad әдісінде немесе ұқсас нәрседе шақырылады. Содан кейін tableView өңдеу шақыруына жауап беру үшін келесі әдісті пайдаланыңыз:

- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
    [super setEditing:editing animated:animated];
    [tableView setEditing:editing animated:animated];
}

Мұны істеу керек нәрсені істеу керек. Егер сізде қандай да бір проблемалар туындаса, дәл осылай айтыңыз және біз мәліметтерді қысқарта аламыз

5
қосылды
Бұл бірдей болуы керек. Мен сондай-ақ, Storyboard UI-ді де қолданамын (өмірді әлдеқайда жеңілдетеді деп айта аламын) және сол сияқты нәрселерді жасауға тура келді, және мен бұл туралы қалай жүрдім. Кейде кейде сіз өзіңіздің мұрагеріңізде қажетті көріністі алу үшін self.parentViewController.navigationItem.rightBarButtonItem = yourButton; арқылы өтуіңіз керек екенін байқадым. Бірақ қалғаны кесте көрінісі IBOutlet ретінде viewController байланысты болғанша бұрынғыдай болу керек
қосылды автор justin, көзі
@SebastianWramba сіз осындай нәрсені адал атқара аласыз. Тек оны Өңдеу деп атаңыз, содан кейін оны setEditing: animated: деп атайтын IBAction әдісін тағайындаңыз. Мен self.navigationItem.rightBarButtonItem = self.editButtonItem пайдаланып, өз бетіңізбен бағдарлама бойынша арнайы қарау координаторының viewDidLoad әдісінде жасаймын. Осылайша, стандартты түйме элементі болғандықтан, әдісті ( setEditing ... ) тағайындаудың қажеті жоқ. Бұл мағынасы бар деп үміттенемін
қосылды автор justin, көзі
Бұл туралы жаңалықтар бар ма? Бір LOC-ді жаңа Storyboard функциясымен қалай ауыстыруға болатынын анықтауға тырысыңыз. Навигациялық тақтаға батырма қойып, оны «Өңдеу» деп атайды, әрине, жұмыс істемейді. ;)
қосылды автор Sebastian Wramba, көзі
Рас, менің ойымша, дөңгелекті жаңғырту (немесе бұл жерде дөңгелекті басқа жерге қою) өте ақылды қадам емес. Өңдеу батырмасын іске асыру ескі сәнді тәсілі бұрынғысынша жақсы көрінеді, алайда қазіргі уақытта сюжеттер мен сегменттер бар.
қосылды автор Sebastian Wramba, көзі
Ия, мен мұны бағдарламаланған жолмен білемін, бірақ мен оны Storyboard UI арқылы орындауға тырысамын.
қосылды автор markplee, көзі

@Graham жауапына қосу үшін, сіз «Стил» батырмасының мәнерін (көк түстің) болуы үшін, стильді өзгерткіңіз келуі мүмкін. Сол сияқты бірнәрсе:

- (IBAction)setEditMode:(UIBarButtonItem *)sender {
    if (self.editing) {
        sender.title = @"Edit";
        sender.style = UIBarButtonItemStylePlain;
        [super setEditing:NO animated:YES];
    } else {
        sender.title = @"Done";
        sender.style = UIBarButtonItemStyleDone;
        [super setEditing:YES animated:YES];
    } 
}
2
қосылды

Storyboard редакторынан редакторлық редактордың редакторы жұмыс істемей, одан кейін бағдарламаны UIViewController.editButtonItem -мен алмастыруға болады.

in viewDidLoad:

 NSMutableArray *toolbarItems = [NSMutableArray arrayWithArray:self.toolbarItems];

[toolbarItems replaceObjectAtIndex:0 withObject:self.editButtonItem];

[self setToolbarItems:toolbarItems];    

бұл кодекс Сыбыр-кеңес тақтасындағы құралдар тақтасындағы ең төменгі элемент ретінде ащы Өңдеу батырмасын қосқан деп болжайды.

1
қосылды
бұл туралы ненің мәні бар? рахмет
қосылды автор kitschmaster, көзі
дұрыс, бірақ iii әлі де бұзу терминімен келіспейді :) бәрібір «бұзу» деген не? Мен үшін бұл код қашып кетпейді. егер бұл код жүйедегі немесе компьютердегі деректерге рұқсатсыз қол жеткізуге мүмкіндік берсе, бірақ бұл жай ғана Edit батырмасын басыңыз.
қосылды автор kitschmaster, көзі
Бұл аздап бұзылған, бірақ редакциялау батырмасын қайта іске қосу керек.
қосылды автор SeanR, көзі
Interface Builder бағдарламасына қосқан түймені ауыстыру үшін кодты пайдаланып, ол шынымен аздап қашқақтай көрінуі керек ... бірақ бұл бізді осылай жасауға мәжбүрлейтін Apple бөлігіндегі кемшілік. Маған қателеспеңдер, менің ойымша, бұл Интерфейстің құрастырушысындағы нақты өңдеу батырмасын қолдайтын Apple-тің үздік шешімі.
қосылды автор SeanR, көзі

Егер сізде UIViewController болса және оның ішіне UITableVew қоссаңыз. UITableView әрекеттесу үшін UIBarButton өңдеуін қосқыңыз келсе, мына әрекеттерді орындап көріңіз:

Бұл жолды қосыңыз ...

- (void)viewDidLoad
{
    [super viewDidLoad];

    ...

    self.navigationItem.leftBarButtonItem = self.editButtonItem;

    ...
}

және бұл әдіс

- (void)setEditing:(BOOL)editing animated:(BOOL)animated {

    [super setEditing:editing animated:animated];
    [self.myListTableView setEditing:editing animated:animated];

    if(self.myListTableView.editing) {
        NSLog(@"editMode on");
    } else {
        NSLog(@"editMode off");
    }
}

мұнда

@property (weak, nonatomic) IBOutlet UITableView *myListTableView;
1
қосылды